stm32 RTC时钟与系统时钟误差

zxg2006 2011-06-17 01:35:38
写了个程序测试一次RTC秒中断,测试timer一秒之内的计数值
【系统时钟晶振8M】
基本流程如下:

初始化:
初始化timer计数频率为系统72M的72分频,即1MHz,中断间隔为0xffff,开启定时器中断 -
初始化并启动RTC秒中断 -

第一次进入RTC中断:
定时器中断计数置0 - 使能定时器计数

进入定时器中断:
定时器中断计数自加

第二次进入RTC中断:
禁止定时器计数 - 读取当前计数值Cnt - (Cnt += 定时器中断数 * 0xffff)

结果:
最后一次读取定时器计数器Cnt = 3237
总的定时器计数:986277
误差:-13723

这个误差值正常吗?
...全文
1129 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lost1421 2011-06-19
  • 打赏
  • 举报
回复
"禁止定时器计数"---这个操作应该去掉。
  • 打赏
  • 举报
回复
如果rtc误差这么大的话, 早就被淘汰了.
Great_Bug 2011-06-18
  • 打赏
  • 举报
回复
Cnt += 定时器中断数 * 0xffff
。。。。。。。。。。。。。。。。。。。这个公式有没有问题???
Great_Bug 2011-06-18
  • 打赏
  • 举报
回复
用晶体的话该没有5%那么大的误差吧?大约也是几十ppm的样子吧?
woshi_ziyu 2011-06-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 osoon 的回复:]

如果rtc误差这么大的话, 早就被淘汰了.
[/Quote]
++
DISINHUI 2011-06-17
  • 打赏
  • 举报
回复
应该注意: 对RTC读写最好在半秒处。因为RTC自己也会对自己的E2读写操作。如果外界操作会造成冲突,当然RTC自己会处理这个冲突。但是会影响RTC精度。
笼统的比较系统时钟和RTC时钟。需要了解系统时钟的精度,例如20ppm,RTC的精度一般的32768Hz的精度在5%,国外有更高精度的32768Hz,但从这个精度,你就可以了解到哪一个更准确。当然要有合适的匹配电容。

27,374

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧