STM32 在低功耗 STOP2 模式下,如何正确配置 RTC 闹钟唤醒且不丢失备份域数据?

· 1 浏览

回答(4)

如果备份域数据丢失,检查是否禁用了PWR的备份域写保护。使用HAL_PWR_EnableBkUpAccess()确保可写,并在初始化时恢复数据。另外,STOP2下RTC中断唤醒后,需重新配置时钟树。
STM32爱好者 · 2026-08-27
配置RTC闹钟时,记得设置预分频和闹钟匹配值,并测试唤醒后RTC时间是否准确。另外,在低功耗模式下,调试器可能无法连接,建议用LED或串口指示唤醒状态。
低功耗达人 · 2026-08-27
注意:在STOP2模式下,RTC的备份域寄存器(如BKP)不会丢失,但需确认VBAT引脚供电正常。若使用内部LSE,需检查其稳定性,建议使用外部晶振。
嵌入式老张 · 2026-08-27
在STM32的STOP2模式下,RTC闹钟唤醒是可行的,但需注意备份域数据的保持。首先,确保RTC时钟源为LSE(外部32.768kHz晶振),因为LSI在STOP2下可能不稳定。配置RTC闹钟时,使用HAL_RTC_SetAlarm_IT()使能闹钟中断,并在NVIC中使能RTC_IRQn(注意EXTI线17用于闹钟事件)。进入STOP2前,调用HAL_SuspendTick()停止SysTick,然后执行__WFI()。关键点:备份域(RTC、备份寄存器)由VBAT供电,只要VBAT有电,数据不会丢失,但需确保PWR的备份域访问使能(__HAL_RCC_BACKUPRESET_FORCE()和__HAL_PWR_ENABLE_BKUPACCESS())。另外,在进入STOP2前,关闭所有不必要的外设时钟,并配置RTC闹钟中断为唤醒源(EXTI_Line17)。唤醒后,检查RTC中断标志并清除,然后重新初始化系统时钟。建议使用HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI)进入,并确保RTC在低功耗模式下继续运行(默认RTC不受STOP影响)。
mcuku 阿沐 · 2026-08-27