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