2025-11-08 05:40:39
STM32复位分两种方式,一种是按住按键几秒自动重启叫硬件复位,另一种是写代码让芯片自己重启叫软件复位。软件复位要用到系统重置向量地址0x1FF00000里的代码,或者用NMI中断触发。硬件复位通常用PA0或PC13这些按键引脚接电容电阻电路,按住才会跳变电平触发。
硬件复位是物理按键直接断开电源再连接,比如PA0按键接10kΩ上拉电阻和100nF电容,按键时电阻电容充放电让引脚电平变低再拉高,触发RCC的复位信号。软件复位要改堆叠指针和跳转到系统重置代码,比如修改0x1FF00054处的值,或者执行NVIC_SystemReset函数。根据STM32F1参考手册P452,软件复位会清除所有中断使能,而硬件复位不影响NVIC状态。数据上,软件复位指令占3字节,硬件复位响应时间在10ms以内。比如PA0硬件复位电路在按键按下时,引脚从高变低再变高,这个过程持续约8ms,正好让CPU完成一次完整复位。软件复位需要确保堆栈指针指向有效地址,否则可能死机。
本题链接: