请选择 进入手机版 | 继续访问电脑版

芯虎论坛

 找回密码
 立即注册
查看: 290|回复: 0

华大MCU如何实现软件复位

[复制链接]

7

主题

7

帖子

27

积分

虎视眈眈

Rank: 1

积分
27
发表于 2021-9-27 16:02:42 | 显示全部楼层 |阅读模式
产品在设计中某些状态下需要MCU进行复位,华大MCU包含了7个复位信号来源,每个复位信号都可以让 CPU 重新运行,绝大多数寄存器会被复位到复位值,程序计数器 PC 会被复位指向 00000000
POR/BOR 复位(VCC 域及 Vcore 域)
●外部 Reset PAD 复位
WDT 复位
PCA 复位
LVD 复位
Cortex-M0+ SYSRESETREQ 软件复位
Cortex-M0+ LOCKUP 硬件复位
华大MCU每个复位源由相应的复位标志进行指示。复位标志均由硬件置位,需要用户软件清零。芯片复位时,如果查询到 Reset_flag. POR15V Reset_flag. POR5V 1 则为上电复位。上电复位时用户程序应当将寄存器 Reset_flag 清零,则下一次复位时可通过 Reset_flag的相关比特判断复位来源。
这些复位源中Cortex-M0+ SYSRESETREQ 软件复位为主动复位,工程师可以在程序中根据自己的需要进行操作,其它的复位为被动复位,当运行的条件满足时会自动复位。下面介绍下华大MCU如何实现软件复位。
软件复位的函数包涵在core_cm0plus.h头文件中,形式为:
#define NVIC_SystemReset           __NVIC_SystemReset
函数的原型为:
__STATIC_INLINE void__NVIC_SystemReset(void)
{
__DSB();                                                          /*Ensure all outstanding memory accesses included
                                                                      buffered write are completed before reset */
SCB->AIRCR  = ((0x5FAUL<< SCB_AIRCR_VECTKEY_Pos) |
                 SCB_AIRCR_SYSRESETREQ_Msk);
__DSB();                                                         /* Ensure completion of memory access */

for(;;)                                                          /* wait until reset */
  {
   __NOP();
  }
}
工程建立好后,工程师在使用的时候直接调用就可以,以上就是华大MCU如何实现软件复位操作流程。

华大单片机-中国芯,中国梦中国人用自己的“芯”
    欢迎入群了解更多信息

   华大MCU交流QQ群: 164973950



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|芯虎论坛 ( 辽ICP备18019618号 )

GMT+8, 2021-10-28 02:52 , Processed in 0.082739 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表