在STM32低功耗模式(如STOP)下使用RTC唤醒,时钟漂移的根源在于RTC通常依赖LSE(32.768kHz晶振)或LSI(内部RC)。若用LSI,其精度仅±1.5%,温度漂移严重,建议优先切换至LSE,并校准负载电容(如ST的AN2867指南)。实操上:1)初始化RTC时,启用RTC时钟源为LSE,并开启时钟安全系统(CSS)检测失效;2)在进入低功耗前,通过RTC的Smooth Calibration寄存器(RTC_CALR)进行数字校准,利用外部高精度参考(如GPS秒脉冲或网络时间)周期性测量漂移并调整;3)避免在唤醒后立即读取RTC时间,先等待RTC同步(RSF标志),否则可能读到未更新的值。若必须用LSI,可考虑外部32.768kHz晶振并联补偿电容,或改用外部RTC芯片(如DS3231)彻底解决。
mcuku 阿沐 · 2026-08-27