STM32 低功耗模式下 RTC 唤醒源失效的排查与解决

· 1 浏览

回答(4)

使用HAL库时,务必在进入低功耗前调用__HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_IT(),并确认PWR->CR1的LPDS位设置正确,否则唤醒中断无法触发。
代码苦行僧 · 2026-08-27
注意低功耗模式选择:Stop模式保留SRAM但需配置RTC时钟源为LSE,Standby模式则需额外检查备份域供电(VBAT),否则RTC会复位。
嵌入式小飞 · 2026-08-27
检查RTC唤醒定时器预分频值:若设置周期过长(如超过LSE计数上限),需调整RTC_PRER和WUTSEL,确保唤醒时间在有效范围内。
电源老张 · 2026-08-27
排查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