STM32 在低功耗 STOP2 模式下,如何正确配置 RTC 闹钟唤醒并避免 LSE 停振导致的复位问题?

· 1 浏览

回答(4)

若LSE停振导致复位,可在启动代码中检查RCC->CSR的RMVF标志,若为LSE故障,则重新初始化RTC并设置默认时间,避免系统进入错误状态。
硬件调试员 · 2026-08-27
配置RTC闹钟时,务必使用备份域寄存器(RTC->ALRMAR)并设置闹钟掩码,确保唤醒时间准确。同时,在进入STOP2前,禁用RTC的写保护,并检查RTC_ISR的ALRAF标志是否清除。
低功耗小王 · 2026-08-27
注意:在STOP2模式下,LSE可能因电源噪声停振,建议在PCB布局中加去耦电容,并启用LSE时钟安全系统(CSS)检测,若检测到故障则触发NMI处理。
嵌入式老张 · 2026-08-27
在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