在STM32低功耗STOP2模式下配置RTC闹钟唤醒,核心是确保LSE(32.768kHz晶振)在低功耗期间稳定运行,并正确处理LSE停振检测。首先,在进入STOP2前,配置RTC时钟源为LSE,使能RTC闹钟中断(ALRA或ALRB),并设置NVIC中RTC_IRQn优先级。然后,在进入STOP2前,检查并清除RTC相关标志(如ALRAF),并确保LSE的BYPASS或驱动能力设置正确(参考数据手册,通常需配置RCC->BDCR的LSEDRV[1:0]为最高驱动能力)。为避免LSE停振导致复位,需在RTC中断服务程序中检测RTC_ISR的LSERDY位,若LSE未就绪,则重新初始化LSE并等待稳定,同时避免在LSE未稳定时进入STOP2。此外,建议在进入STOP2前调用HAL_PWR_EnterSTOPMode(),并设置WFI指令,唤醒后检查PWR_CSR的WUF标志,若因RTC闹钟唤醒,则正常执行;若因复位唤醒,则需重新配置系统时钟和RTC。实操建议:使用HAL库时,在RTC闹钟中断回调中处理唤醒逻辑,并添加LSE故障恢复代码,例如重新启动LSE并重新同步时间。
mcuku 阿沐 · 2026-08-27