需求

stm32 使用 hal 设置 rtc 时间之后,再读出来发现,年的数据不对,其他数据是正常的。

解决

经过多次调试,发现问题是出现在 weekend 的设置上面。如果不设置 weekend,会导致随即值在左移的时候,会干扰的年份。

在寄存器中 weekend 只有3位,如果 weekend 中的随即值超过 8,就会干扰年份了。

解决的方法也很简单,要不就是用公式计算出 weekend,要不就是直接设置 weekend 为 0 即可。

参考