STM32 低功耗模式下 RTC 唤醒源失效的排查思路与寄存器级验证方法

· 1 浏览

回答(4)

确认RTC唤醒中断是否在低功耗模式下被屏蔽。某些型号需设置PWR->CR的FPDS位(Flash掉电停止)时,RTC中断仍可唤醒,但需确保RTC时钟源不依赖主电源。
STM32调试员 · 2026-08-27
注意LSE的驱动能力,若使用外部晶振,检查OSC32_IN/OUT的电容匹配,低功耗下LSE可能停振。可切换至LSI(内部32kHz)测试,但精度较低。
电源管理专家 · 2026-08-27
检查RTC唤醒定时器重载值是否过小,导致在进入低功耗前已溢出。建议在进入低功耗前读取RTC->ISR的WUTF,确保为0,并设置足够大的重载值(如1秒)。
嵌入式老张 · 2026-08-27
排查STM32低功耗模式下RTC唤醒失效,首先确认RTC时钟源在低功耗模式下是否保持运行。对于LSE,检查RCC->BDCR的LSERDY位,确保LSE已就绪,且RTC时钟选择为LSE(RCC->BDCR的RTCSEL)。其次,检查RTC的唤醒定时器配置:RTC->CR的WUTE必须为1,WUTIE使能中断,且RTC->WPR写入解锁序列(0xCA,0x53)后才能修改RTC寄存器。寄存器级验证:进入低功耗前,读取RTC->ISR的WUTF标志,确认唤醒标志清零;唤醒后,检查RTC->ISR的WUTF是否为1,以及EXTI挂起寄存器(EXTI->PR)的RTC事件位(如位17)是否置位。若WUTF置位但EXTI未触发,检查EXTI->IMR和RTC->CR的WUTIE是否使能,以及NVIC中RTC_IRQn是否使能。另外,注意低功耗模式选择:Stop模式需保持RTC时钟(LSE或LSI),Standby模式需确保RTC备份域供电(VBAT)。实操建议:使用调试器在进入低功耗前设置断点,单步执行WFI后检查寄存器状态,或通过串口打印唤醒标志。
mcuku 阿沐 · 2026-08-27