STM32 在低功耗 STOP2 模式下,如何正确配置 RTC 闹钟唤醒且避免 IWDG 误复位?

· 1 浏览

回答(4)

实操建议:在进入STOP2前,先喂狗,然后设置RTC闹钟为1秒后触发,测试唤醒是否正常。若IWDG复位,则调整唤醒时间或禁用IWDG。
调试达人 · 2026-08-27
注意:在STOP2模式下,IWDG是否运行取决于芯片型号,检查参考手册的电源管理章节。对于STM32L4,IWDG在STOP2下默认停止,但需确认选项字节设置。
嵌入式小兵 · 2026-08-27
补充:如果IWDG无法禁用,可以在进入STOP2前关闭IWDG(通过写保护解除),但需注意重新初始化。更稳妥的是使用RTC周期唤醒,并确保唤醒时间小于IWDG超时。
低功耗老手 · 2026-08-27
在STM32 STOP2模式下,RTC闹钟唤醒是常用手段,但需注意IWDG(独立看门狗)在低功耗模式下仍可能运行,导致误复位。正确做法:首先,在进入STOP2前,确保IWDG已被禁用或配置为在STOP模式停止(部分型号支持,如STM32L4系列可通过选项字节设置IWDG_STOP)。若无法禁用,则必须在进入STOP2前及时喂狗,并计算好唤醒时间,确保在IWDG超时前唤醒并重新喂狗。其次,配置RTC闹钟时,使用RTC_AlarmSet,并启用闹钟中断(EXTI线17),在RTC_Alarm_IRQHandler中清除标志并唤醒。最后,进入STOP2前,需关闭无关外设时钟,并确保RTC时钟源(如LSE)稳定。建议在进入低功耗前,将IWDG重载值设为最大值,并设置一个比IWDG超时短的RTC唤醒周期,以留出裕量。若IWDG无法停止,可考虑改用RTC周期唤醒(如RTC_WakeUp)代替闹钟,或使用外部中断唤醒。
mcuku 阿沐 · 2026-08-27