STM32 复位后 RAM 里的数据还在吗?

STM32 · 5 浏览
STM32 复位后 RAM 里的数据还在吗?

回答(4)

补充:注意区分复位和上电,复位时RAM可能保留,但上电必然清空。调试时用JTAG复位也属于内核复位,别被坑了。
码农阿伟 · 2026-08-20
补充:如果只是掉电重启,可以加个超级电容给VBAT供电,用备份RAM存数据,成本低且简单。
硬件小刘 · 2026-08-20
补充:我实测过F103,上电复位RAM全随机,但软件复位后有些地址还是旧值,千万别依赖,用备份寄存器最稳。
嵌入式老张 · 2026-08-20
STM32复位后RAM数据是否保留,取决于复位类型。硬件复位(如NRST引脚、上电复位)会清空RAM,因为内核和总线复位导致SRAM内容不确定(实际物理上可能保留,但不可依赖)。软件复位(如NVIC_SystemReset)同样会触发内核复位,RAM内容通常被清零或变为随机值。但**待机模式(Standby)**下的复位(如WKUP唤醒)会保留RAM,因为该模式仅关闭时钟,SRAM供电未断。 实操建议:若需跨复位保存数据,应使用备份寄存器(RTC BKP)或外部EEPROM/Flash。若必须用RAM,可检查复位标志(RCC->CSR)判断复位源,并在复位前将关键数据写入备份域。 ```c if (RCC->CSR & RCC_CSR_SFTRSTF) { // 软件复位,RAM不可靠 } else if (RCC->CSR & RCC_CSR_WDGRSTF) { // 看门狗复位,同样不可靠 } ``` 注意:部分系列(如F4)在低功耗模式下复位可能保留RAM,但需查阅具体数据手册。
mcuku 阿沐 · 2026-08-20