mcu_reset
单片机复位介绍
经典的STM32内部复位电路如下
可以看到复位分为两大类:内部复位和外部复位
内部复位源通过脉冲发生器在 NRST 引脚产生延时至少 20μs 的脉冲,引起 NRST 保持电平产生复位;
外部复位源则直接将 NRST 引脚电平拉低产生复 位。
外部复位
NRST 引脚上的低电平。
软件复位
将 Arm® Cortex®-M3 中断应用和复位控制寄存器中的 SYSRESETREQ 置“1” 时,可实现软件复位。JLINK对设备的复位就是控制的这一位。Reset: Reset device via AIRCR.SYSRESETREQ.
内核复位
在Cortex-M内核文档中大概有这样的描述:通过设置 NVIC 中应用程序中断与复位控制寄存器(AIRCR)的VECTRESET 位,可只复位处理器内核而不复位其它片上设施。
也就是说,这样操作只复位Cortex-M内核,不会复位UART这些片内外设。
1 | void NVIC_CoreReset(void) |
系统复位
软件复位中的系统复位操作的寄存器位(SYSRESETREQ)不同,复位的对象为整个芯片(除后备区域)。
系统复位函数:
1 | void NVIC_SysReset(void) |
电源复位
分为上电复位(POR 复位),掉电复位(PDR 复位),从待机模式唤醒。
依靠单片机内部的电源监控电路,在供电电压达不到设定值时自动进行复位。当检测到 VDD/VDDA低于阈值电压 VPOR和 VPDR 时,芯片将会自动保持为复位状 态,上电复位和掉电复位的波形图如下。
低功耗复位
低功耗管理复位的产生有两种情况,一种是进入待机模式时,另一种是进入停止 模式时。在这两种情况下,如果把用户选择字节中的 RSTSTDB 位(待机模式 时)或 RSTSTOP 位(停止模式时)清零,系统将被复位而不是进入待机模式或 停止模式。
复位源查看
可以通过查看 RCM_CSTS(控制/状态寄存器)中的复位标志位识别复位事件来源,也可以相应清除标志位。