STM32F4 系列在低功耗 STOP 模式下,如何正确配置 RTC 闹钟唤醒并保持 SRAM 数据不丢失?

· 2 浏览

回答(4)

若需降低功耗,可关闭RTC的备份域写保护(PWR_CR的DBP位),并配置RTC的闹钟匹配为精确时间。同时,建议使用HAL_PWR_EnterSTOPMode的WFI指令,避免WFE导致意外唤醒。
电源管理专家 · 2026-08-27
注意:RTC闹钟唤醒依赖EXTI,需在RTC_Alarm_IRQHandler中调用HAL_RTC_AlarmIRQHandler(),并检查RTC_FLAG_ALRAF,否则可能无法再次进入STOP。
STM32开发者 · 2026-08-27
补充:进入STOP前,务必关闭所有外设时钟(如USART、SPI),否则会增加功耗,但不影响SRAM保持。唤醒后需重新初始化外设。
嵌入式老张 · 2026-08-27
在STM32F4的STOP模式下,要使用RTC闹钟唤醒并保持SRAM数据,需按以下步骤操作:首先,确保RTC时钟源为LSE或LSI,并配置RTC闹钟中断(EXTI line 17)。进入STOP前,设置PWR的PDDS位为0(选择STOP模式),并调用HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON, PWR_STOPENTRY_WFI)。关键点:STOP模式下SRAM内容默认保留,但需确保未启用低功耗模式下的SRAM掉电(如PWR_CR的FPDS位为0)。同时,RTC必须由备份域供电(VBAT),且RTC中断需在NVIC中使能。唤醒后,系统时钟需重新配置(如HSI),并检查RTC闹钟标志。建议使用HAL_RTC_SetAlarm_IT()配置闹钟,并在RTC_Alarm_IRQHandler中清除标志。注意:若使用LSE,需等待LSE就绪;若使用LSI,精度较低但无需外部晶振。
mcuku 阿沐 · 2026-08-27