STM32 RTC3混合模式写入TR寄存器导致SSR重置的技术咨询
STM32 RTC混合模式下SSR被重置的问题解答
现象是否正常?
这是正常的硬件行为。STM32部分芯片的RTC在混合模式(同时启用BCD日历与二进制亚秒计数)下,写入RTC->TR(时间寄存器)或RTC->DR(日期寄存器)时,硬件会自动将亚秒寄存器SSR重置为0xFFFFFFFF。这个设计是为了确保日历时间与亚秒计数的同步性,避免时间修改导致的计数逻辑混乱。
配置与解决要点
- 混合模式下
SSR为只读:只有在纯二进制RTC模式(关闭BCD日历功能)时,SSR才允许手动写入。混合模式中SSR由硬件自动递减更新,无法通过写操作修改,所以你尝试备份写回的方法不可行。 - 替代处理方案:
- 修改日历时间前,先计算当前系统的绝对时间戳(结合日历时间的总秒数与
SSR的亚秒值),修改完成后,基于新的日历时间重新校准依赖SSR的定时器逻辑,或者通过调整定时事件的触发时间来补偿SSR重置带来的误差。 - 尽量减少运行过程中调用
HAL_RTC_SetTime的频率,仅在必要的时间校准场景下使用。 - 查阅对应芯片的参考手册(如STM32L0/L4/H7系列的RTC章节),其中会明确标注混合模式下写入TR/DR触发SSR重置的行为说明。
- 修改日历时间前,先计算当前系统的绝对时间戳(结合日历时间的总秒数与
内容的提问来源于stack exchange,提问作者Robert L.
相关产品推荐
相关产品推荐

