STM32F4 系列在低功耗模式下,如何通过RTC闹钟唤醒并保持SRAM数据不丢失的完整配置流程?

· 1 浏览

回答(4)

实际项目中,建议将关键数据存入备份寄存器(RTC_BKPxR),因为Stop模式虽保留SRAM,但若意外复位则丢失;备份寄存器更可靠。
可靠性工程师 · 2026-08-27
注意:Stop模式下SRAM数据保留,但若使用LDO低功耗模式,唤醒后需等待稳定;建议在唤醒后先检查PWR_FLAG_WU并清除,再重新初始化时钟。
电源控小李 · 2026-08-27
补充:若使用HAL库,记得在进入Stop前调用HAL_RTC_AlarmIRQHandler处理中断,并设置RTC闹钟为中断模式而非事件模式,否则无法唤醒。
嵌入式老张 · 2026-08-27
对于STM32F4系列,要实现RTC闹钟唤醒并保持SRAM数据,需进入Stop模式(而非Standby),因为Stop模式保留SRAM和寄存器内容。完整流程:1)配置RTC时钟源(LSE或LSI),使能RTC并设置闹钟(如使用HAL_RTC_SetAlarm),确保闹钟中断使能(RTC_Alarm_IRQn)。2)配置NVIC使能RTC闹钟中断,并在中断服务函数中清除闹钟标志。3)进入低功耗前,调用HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI),此函数会关闭主时钟但保留SRAM。4)唤醒后,系统时钟需重新配置(调用SystemClock_Config),并检查唤醒源(如PWR_GetFlagStatus(PWR_FLAG_WU))。注意:若使用LSI,唤醒后需重新校准;若需保留备份寄存器,可同时使用RTC备份域。建议在进入Stop前关闭不必要外设时钟,并确保电源稳压器配置正确(低功耗模式)。
mcuku 阿沐 · 2026-08-27