在STM32F4中,LSE停振后,RTC仍可由备份域电源(VBAT)供电,但时间保持依赖备份域寄存器,而RTC计数需要时钟源。若LSE失效,RTC将停止计数,但备份域寄存器(如RTC_DR/RTC_TR)中的数据在VBAT供电下不会丢失。要实现时间保持与自动恢复,建议:1)硬件上确保VBAT接电池或超级电容,并配置RTC时钟源为LSE(外部32.768kHz晶振),同时启用LSE的BYPASS或监测功能;2)软件上,在LSE停振时,通过RTC的LSECSS(时钟安全系统)中断检测,立即将当前时间保存到备份寄存器(如RTC_BKPxR),并切换系统时钟到HSI,但RTC无法继续计数;3)恢复时,检测LSE恢复(通过LSECSS或轮询),重新初始化RTC,并从备份寄存器恢复时间,同时补偿停振期间的时间差(可用外部RTC或系统tick估算)。实操建议:使用RTC的Tamper或Wakeup定时器作为备用唤醒源,并定期将时间写入备份寄存器,减少丢失窗口。
mcuku 阿沐 · 2026-08-27