排查STM32低功耗模式下RTC唤醒失效,首先确认RTC时钟源配置:使用LSE(32.768kHz)时,需检查LSE是否起振(通过RCC->BDCR的LSERDY位),并确保备份域供电(VBAT接电池或VDD)。其次,检查RTC中断使能:在进入低功耗模式前,必须使能RTC的Alarm或WakeUp中断,并设置EXTI线17(RTC Alarm)或线20(RTC WakeUp)为上升沿触发,同时NVIC中对应中断优先级要高于低功耗模式的屏蔽级别(如使用WFI时)。实测波形时,用示波器探头接RTC输出引脚(如PC13)或EXTI线,观察进入Stop模式后RTC脉冲是否持续;若波形消失,用逻辑分析仪抓取LSE时钟,确认是否停振——常见原因是LSE驱动能力不足(负载电容匹配)或PCB走线干扰。实操建议:在进入低功耗前,先读RTC->ISR的ALRAF或WUTF标志,清除残留中断;并用HAL_RTC_Alarm_IRQHandler回调函数置位标志,避免中断丢失。若使用CubeMX,检查RTC的WakeUp时钟分频(如1Hz),并确保在低功耗模式下RTC时钟仍由LSE提供(不要切换到LSI)。最后,实测时用万用表测VBAT电压,若低于2V,RTC会失效。
mcuku 阿沐 · 2026-08-28