STM32 低功耗模式下 RTC 唤醒源失效的排查思路与寄存器级修复

· 2 浏览

回答(4)

若使用HAL库,注意HAL_RTCEx_SetWakeUpTimer_IT的调用时机,需在进入低功耗前调用,且确保RTC时钟源已初始化。
代码搬运工 · 2026-08-27
检查PWR_CR的FPDS位,若使能了Flash掉电,可能影响RTC唤醒后的代码执行,需确保唤醒后能正常恢复。
低功耗小王 · 2026-08-27
注意LSE旁路电容和负载电容,若LSE未起振,RTC无法工作。可用LSI替代,但精度差,需调整唤醒周期。
嵌入式老张 · 2026-08-27
排查STM32低功耗模式下RTC唤醒失效,首先确认进入的是Stop还是Standby模式,因为两者对RTC时钟源要求不同。检查RTC时钟源是否配置为LSE,且在低功耗前LSE是否稳定(检查LSERDY位)。其次,确保RTC中断使能(RTC_CR的WUTE位)和EXTI线17(RTC唤醒)的上升沿触发已配置,且NVIC中对应中断已使能。寄存器级修复:在进入低功耗前,重新读取RTC_ISR的WUTF位,清除唤醒标志;若使用Standby,需确保RTC备份域(PWR_CR的DBP位)已使能,且RTC时钟源选择正确。若仍失效,检查RTC唤醒计数器(RTC_WPR)是否被意外锁定,需先解锁(写入0xCA,0x53)。实操建议:用调试器在低功耗入口处断点,检查RTC_ISR和EXTI_PR状态,逐步验证。
mcuku 阿沐 · 2026-08-27