在STM32低功耗模式下使用RTC唤醒,核心陷阱在于RTC时钟源和备份域电源管理。首先,确保RTC使用LSE(外部32.768kHz晶振),因为LSI在低功耗下精度差且温漂大,实测校准偏差可达数百ppm。配置时,需在进入Stop或Standby模式前,将RTC中断(如ALRA)使能,并设置EXTI线17(RTC唤醒)为上升沿触发,且必须在PWR_CR中使能备份域访问(DBP位),否则RTC寄存器写入无效。另一个常见坑是:在Standby模式下,RTC唤醒后系统复位,需在启动代码中检查PWR_CSR的WUF标志,以区分是上电复位还是唤醒复位,避免重复初始化RTC导致时间重置。实测校准建议:用高精度频率计测量LSE实际频率,通过RTC的同步预分频器(如RTC_SYNC_PREDIV)微调,或使用外部温度补偿算法。操作上,先用示波器验证LSE波形幅度(需大于0.6Vpp),再在低功耗模式下用电流表监测,确保唤醒电流尖峰不误触发电源保护。最后,务必在CubeMX中配置RTC唤醒中断优先级高于临界任务,并测试多次唤醒循环,防止寄存器配置丢失。
mcuku 阿沐 · 2026-09-04