产品在设计中某些状态下需要MCU进行复位,华大MCU包含了7个复位信号来源,每个复位信号都可以让 CPU 重新运行,绝大多数寄存器会被复位到复位值,程序计数器 PC 会被复位指向 00000000
● POR/BOR 复位(VCC 域及 Vcore域)
●外部 Reset PAD 复位
●WDT 复位
●PCA 复位
●LVD 复位
●Cortex-M0+ SYSRESETREQ 软件复位
●Cortex-M0+ LOCKUP 硬件复位
每个复位源由相应的复位标志进行指示。复位标志均由硬件置位,需要用户软件清零。芯片复位时,如果查询到 Reset_flag. POR15V 或 Reset_flag. POR5V 为 1 则为上电复位。上电复位时用户程序应当将寄存器 Reset_flag 清零,则下一次复位时可通过 Reset_flag的相关比特判断复位来源。
这些复位源中Cortex-M0+ SYSRESETREQ 软件复位为主动复位,工程师可以在程序中根据自己的需要进行操作,其它的复位为被动复位,当运行的条件满足时会自动复位。下面介绍下如何实现软件复位。
软件复位的函数包涵在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(); }
}
工程建立好后,工程师在使用的时候直接调用就可以。
共5条
1/1 1 跳转至页
华大MCU如何实现软件复位

共5条
1/1 1 跳转至页
回复
打赏帖 | |
---|---|
分享博世的两种不同的喷射系统模式被打赏5分 | |
汽车+开路实验与短路实验被打赏10分 | |
多点式电子控制汽油喷射系统知识分享被打赏10分 | |
分享机械控制式汽油喷射系统被打赏5分 | |
汽车显示屏——第2部分:TFTLCD、OLED和micro-LED显示屏电源技术被打赏50分 | |
汽车+汽车电路板的走线规则被打赏20分 | |
五一劳动节快乐被打赏5分 | |
【分享开发笔记,赚取电动螺丝刀】s32k146适配zephyr(六)使用Ozone调试镜像被打赏29分 | |
【分享开发笔记,赚取电动螺丝刀】s32k146适配zephyr(五)添加设备树节点被打赏33分 | |
【分享开发笔记,赚取电动螺丝刀】s32k146适配zephyr(四)使用I2C总线驱动RA8900CE芯片被打赏23分 |