当前位置 : 主页 > 编程语言 > 其它开发 >

STM32学习笔记——RTC的亚秒值校准

来源:互联网 收集:自由互联 发布时间:2022-05-30
STM32学习笔记——RTC的亚秒值校准1. 使用GPS作为RTC ​gps模块配置出PPS脉冲,单片机使用pps中断作为RTC校准的标准时钟。解析GPS模块输出的RMC消息中的年月日时分秒的值,在pps中断发生时
STM32学习笔记——RTC的亚秒值校准 1. 使用GPS作为RTC

​ gps模块配置出PPS脉冲,单片机使用pps中断作为RTC校准的标准时钟。解析GPS模块输出的RMC消息中的年月日时分秒的值,在pps中断发生时候默认是没秒的开始,也就是此时亚秒值应该为0。这时候和本地的RTC时钟做对比,进行后续的校准工作。

2. RTC亚秒校准的相关寄存器

image
image
image

3. 校准流程

image

4. 亚秒校准函数记录

​ 校准亚秒时使用HAL_RTCEx_SetSynchroShift函数。

​ 参数1:RTC_Handler:要校准的RTC

​ 参数2:ShiftAdd1S:如果这个值置为RTC_SHIFTADD1S_SET将会在RTC的RTC_TR中加一秒。置为RTC_SHIFTADD1S_RESET不会更改秒值

​ 参数3:ShiftSubFS:要调整的值占的RTC_SSR 的值。SSR寄存器是一个从256开始倒计时的寄存器。倒计时到0就相当于增加了一秒,这里将要调整的时间的 值计算出对应要调整的SSR的值后最终会增加到SSR寄存器中。如想要调慢0.5s:

image

​ 其中PREDIV_S是在配置RTC时候设置的![image-20220421170105647]image

​ 得出式子:0.5=SUBFS/(255+1) => SUBFS = 128 。这个值最后会增加到SSR寄存器,SSR寄存器就相当于多跑128后才会增加一秒,达到了延时的作用。向前校准时候要就需要先把S值增加一秒在将SSR的寄存器增加(1-增加的秒值)。

上一篇:Python学习之路-基础数据类型-第二篇
下一篇:没有了
网友评论