在STM32低功耗STOP2模式下配置RTC闹钟唤醒,核心是确保LSE(32.768kHz晶振)在低功耗期间保持稳定,并在唤醒后正确初始化时钟。首先,进入STOP2前,需配置RTC时钟源为LSE,并启用LSE的驱动能力(通过RCC->BDCR的LSEDRV位,通常设为最高驱动以增强抗干扰)。同时,使能RTC的闹钟中断(ALRAIE)和唤醒中断(WUTIE),并确保NVIC中对应中断已使能。进入STOP2前,建议先读取RTC的ISR寄存器确认ALRAF标志已清除,并设置EXTI线17(RTC闹钟)为上升沿触发,使能EXTI中断。唤醒后,在RTC中断服务程序中,首先检查并清除ALRAF标志,然后重新配置系统时钟(如HSE或HSI),因为STOP2会关闭主时钟。为避免LSE停振导致启动失败,建议在唤醒后立即检查LSE是否就绪(通过RCC->BDCR的LSERDY位),若未就绪,则切换到HSI作为RTC时钟源,并重新初始化LSE(可尝试多次启动,或降低负载电容)。此外,硬件上确保LSE晶振的负载电容匹配(通常6-12pF),并尽量缩短PCB走线。实操建议:在进入STOP2前,调用HAL_RTC_AlarmIRQHandler()的清除逻辑,并设置RTC的备份寄存器(如RTC_BKPxR)记录状态,以便唤醒后判断是否需要重新校准。
mcuku 阿沐 · 2026-08-27