2025-11-08 06:24:41
软件复位就是让芯片自己重启的。比如往系统控制寄存器写特定值,芯片就会自动关机再开机。比如STM32F4里要往0x5FA00004地址写0x4S556300,或者用HAL库里的Nvic_SystemReset函数。这样就像按了复位按钮,但不用物理按键。
为什么这样搞呢?因为STM32的复位源有五种:上电复位、外部复位、软件复位、深睡眠复位和独立复位。手册里写明软件复位是通过向SCB寄存器写特定值触发的(参考RM0008 P141)。比如写0x5FA00004到RCC基址0x40023800的APB2寄存器,就能触发系统复位。数据手册说这种复位会先停止所有外设,再重新初始化时钟和内存。比如当写错值时,芯片会进入错误状态,就像重启失败一样。所以写对了才能稳稳当当地重启。模拟效果:软件复位就是让芯片自己重启的,比如往系统控制寄存器写特定值,比如0x5FA00004和0x4S556300,这样芯片会自动重启就像按复位按钮一样。为什么这样搞呢因为STM32的复位源有五种上电复位外部复位软件复位深睡眠复位和独立复位手册里写明软件复位是通过向SCB寄存器写特定值触发的参考RM0008 P141比如写0x5FA00004到RCC基址0x40023800的APB2寄存器就能触发系统复位数据手册说这种复位会先停止所有外设再重新初始化时钟和内存比如当写错值时芯片会进入错误状态就像重启失败一样所以写对了才能稳稳当当地重启
本题链接: