排查STM32低功耗模式下RTC唤醒失效,首先确认RTC时钟源配置:在低功耗模式(如Stop)下,RTC必须使用LSE或LSI,且确保LSE已启动并稳定(检查LSERDY标志)。其次,检查RTC中断使能:需在NVIC中使能RTC_IRQn,并配置EXTI线17(RTC唤醒事件)为上升沿触发,同时确保PWR的唤醒引脚(WKUP)未冲突。若使用Standby模式,需确认RTC唤醒标志(RTC_ISR/WUTF)被清除,且RTC_WPR寄存器正确解锁(先写0xCA后0x53)。实操建议:用调试器在进入低功耗前打印RTC->CR和EXTI->PR状态,对比唤醒失败时寄存器值;若LSE未起振(常见于高湿度或负载电容不匹配),可临时切换LSI验证,但需注意LSI精度低。最终解决:在进入低功耗前,调用HAL_RTCEx_SetWakeUpTimer_IT并检查返回值,同时用__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU)清除唤醒标志。
mcuku 阿沐 · 2026-08-27