OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5142|回复: 1

关于RTC亚秒值的一个注记

[复制链接]

94

主题

369

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2016-8-25
在线时间
485 小时
发表于 2018-3-3 19:28:01 | 显示全部楼层 |阅读模式
本帖最后由 学习stm32f4 于 2018-3-3 20:36 编辑

大家好。
在探索者RTC这一节时,关于亚秒值,一个注记为:
根据RTC_SSR寄存器的描述,图1所示,同步预分频器有一个计数器SS[15:0],从亚秒值计算公式中的减号可以推出,该计数器是从同步预分频器的值PREDIV_S开始递减计数到0,周而复始。
该递减计数器的计数频率为粗略校准RTC_CALIBR的输出频率,由于ck_spre1hz,故粗略校准RTC_CALIBR的输出频率是(PREDIV_S+1),图2所示。这样,在某一时刻读取的亚秒值为
(PREDIV_S-SS)/(PREDIV_S+1)。注意,计数器SS[15:0]是不能写的,只能读取。
例如,PREDIV_S=255,这时,SS从255开始以RTC_CALIBR的输出频率递减计数,在某一时刻,SS递减到了200,则此时刻的亚秒值=(255-200)/(255+1)=55/256秒。在下一时刻,SS递减到了100,
则此时刻的亚秒值=(255-100)/(255+1)=155/256秒。
亚秒值是通过不停读取SS[15:0]
的值,在程序中通过计算得到的。
在RTC的标准库中,RTC_GetSubSecond()函数返回的是亚秒寄存器SSR的值,图3所示,该函数并没有计算亚秒。




3.jpg
2.jpg
1.jpg
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

93

帖子

0

精华

初级会员

Rank: 2

积分
133
金钱
133
注册时间
2018-1-27
在线时间
4 小时
发表于 2018-3-4 12:36:02 | 显示全部楼层

想学习MM32的call群 676021505
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 18:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表