AT32F435的软件复位
在MCU运行中,复位的情况比较多,有外部复位,也有内部复位,比如我们常按的Reset引脚拉低就是外部复位,而内部复位也分主动复位和被动复位,再比如WDT的复位就是被动复位。此时软件已经不知道要运行什么了!只能靠复位来重新运行了。还有一种情况,MCU主动复位,这样MCU可以重新加载,比如我们项目最常见的应用场景是Reset之后,进入IAP启动。
应用场景确定了!那么我们如何在软件中Reset呢!
unsigned int *reset=(unsigned int*)0xe000ed0c;
__dsb(0xF);
*reset = (unsigned int)((0x5FAUL << 16U) | ((*reset) & (7UL<<8U)) | (1UL<<2U) );
__dsb(0xF);
是不是看着有点复杂?其实ARM的CMSIS已经提供对应的API接口。
NVIC_SystemReset();
这回简单了吧!