STM32 开机和复位有什么区别?如何区分?

STM32 · 1 浏览
STM32 开机和复位有什么区别?如何区分?

回答(4)

区分后建议在日志里打印标志值,方便定位是上电还是异常复位,对排查看门狗或硬件故障很有用。
硬件迷途 · 2026-08-18
实际调试时,可以用调试器读RCC->CSR,但记得先备份,因为读后要清标志,否则下次判断会出错。
码农小李 · 2026-08-18
补充:如果用了外部复位芯片,开机和复位在引脚时序上可能一样,但看CSR标志最靠谱,别依赖延时判断。
嵌入式老张 · 2026-08-18
STM32的“开机”指首次上电(冷启动),而“复位”指运行中通过复位引脚、看门狗或软件触发重新启动(热启动)。硬件上,两者都会触发系统复位,但开机时电源电压从0上升,复位时序由POR(上电复位)保证;复位时电源已稳定,仅内部逻辑重置。区分方法:1)检查RCC->CSR寄存器中的复位标志位,如RCC_CSR_PORRSTF(上电复位)或RCC_CSR_PINRSTF(引脚复位),开机时PORRSTF置1,复位时可能为其他标志。2)在main函数开头读取并清除标志: ```c if (RCC->CSR & RCC_CSR_PORRSTF) { /* 开机 */ } else { /* 复位 */ } RCC->CSR |= RCC_CSR_RMVF; // 清除标志 ``` 实操建议:区分场景用于初始化策略,如开机时校准外设,复位时保留RAM数据。注意:若复位由看门狗触发,标志为IWDGRSTF,需单独判断。
mcuku 阿沐 · 2026-08-18