本帖最后由 Alden 于 2023-11-6 14:32 编辑
#申请原创# #技术资源#
应用开发中有时需要区分不同的状态来进行不同的操作。
比如上电复位进行比较长的自检,而软件指令或者复位按键进行复位不需要。
或者需要监测是否出现看门狗复位,表示程序运行出现过异常没有喂狗。
通过查看APM32F103系列的用户手册可以在复位与数字隔离的寄存器中找到相关描述
NRST** (发生 NRST 引脚复位标志):NRST引脚出现复位型号就会置位,软硬件复位方式都会有NRST复位。
PODRST**(发生上电/掉电复位标志):发生上电/掉电复位就会置位。
SWRST**(发生软件复位标志):发生软件复位标志会置位,例如 __NVIC_SystemReset();
IWDTRST**(发生独立看门狗复位标志):发生独立看门狗复位会置位。
WWDTRST**(发生窗口看门狗复位标志):发生窗口看门狗复位会置位。
LPWRRST**(发生低功耗复位标志):发生低功耗复位会置位,需要选项字节配置低功耗复位。
以上标志位发生后不会自动清空,可以写RST**CLR(清除复位标志)来清空复位标志位。
代码首先可以直接读寄存器判断,或者调用库函数来判断是哪个标志位置位了。
|