OpenEdv-开源电子网

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

STM32用定时器做定时数据上报,怎么消除定时器长时间运行的误差

[复制链接]

33

主题

82

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2020-1-19
在线时间
94 小时
发表于 2022-1-11 14:40:38 | 显示全部楼层 |阅读模式
1金钱
2.png 1.png
如果这样长时间运行下去的话,上报周期就越来越小了

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

911

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4501
金钱
4501
注册时间
2019-9-4
在线时间
913 小时
发表于 2022-1-11 14:46:20 | 显示全部楼层
每次进定时器中断后重新配置一下定时器的计数器寄存器值
回复

使用道具 举报

12

主题

3387

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8638
金钱
8638
注册时间
2020-5-11
在线时间
4090 小时
发表于 2022-1-11 14:49:40 | 显示全部楼层
你算一下这个时间一天差多少秒?是否受温度影响?是否可以软件上补偿一下?
若是要求高呢,建议使用DS3231那样的RTC芯片。
专治疑难杂症
回复

使用道具 举报

6

主题

890

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1481
金钱
1481
注册时间
2020-8-19
在线时间
336 小时
发表于 2022-1-11 14:53:37 | 显示全部楼层
你这个不好做离线补偿哦,都不规律的,在线的话可以用网络授时来补偿修正
回复

使用道具 举报

33

主题

82

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2020-1-19
在线时间
94 小时
 楼主| 发表于 2022-1-11 14:58:54 | 显示全部楼层
A571157242 发表于 2022-1-11 14:46
每次进定时器中断后重新配置一下定时器的计数器寄存器值

hal库的话要怎么配置呢?
回复

使用道具 举报

33

主题

82

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2020-1-19
在线时间
94 小时
 楼主| 发表于 2022-1-11 14:59:19 | 显示全部楼层
LcwSwust 发表于 2022-1-11 14:49
你算一下这个时间一天差多少秒?是否受温度影响?是否可以软件上补偿一下?
若是要求高呢,建议使用DS3231 ...

请问补偿的话是怎么补偿?
回复

使用道具 举报

12

主题

3387

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8638
金钱
8638
注册时间
2020-5-11
在线时间
4090 小时
发表于 2022-1-11 15:26:43 | 显示全部楼层
Soleil 发表于 2022-1-11 14:59
请问补偿的话是怎么补偿?

假如一天慢一秒,那么:
if(hour==24)
{
hour=0;
sec++;//补偿
}
这样操作呢跳动有点大,建议从“亚秒”去操作,比如改变htim6.Instance。
专治疑难杂症
回复

使用道具 举报

80

主题

931

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3348
金钱
3348
注册时间
2013-5-28
在线时间
468 小时
发表于 2022-1-11 15:30:31 | 显示全部楼层
时钟不准一切都白说.
使用专用的32.678晶振,或者其他低频晶振,时钟可以很准的.
品牌可选精工,什么的
回复

使用道具 举报

33

主题

82

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2020-1-19
在线时间
94 小时
 楼主| 发表于 2022-1-11 16:24:14 | 显示全部楼层
聚东风 发表于 2022-1-11 15:30
时钟不准一切都白说.
使用专用的32.678晶振,或者其他低频晶振,时钟可以很准的.
品牌可选精工,什么的

我这个不是用的RTC,用的是定时器
回复

使用道具 举报

80

主题

931

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3348
金钱
3348
注册时间
2013-5-28
在线时间
468 小时
发表于 2022-1-11 16:31:30 | 显示全部楼层
Soleil 发表于 2022-1-11 16:24
我这个不是用的RTC,用的是定时器

所以叫时钟不准啊,你片内的主频不准,其他补偿啥的都没用的.
用久了主频还是会自己跑.
比较精准的就是外部的低频晶振
回复

使用道具 举报

33

主题

82

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2020-1-19
在线时间
94 小时
 楼主| 发表于 2022-1-11 17:00:11 | 显示全部楼层
聚东风 发表于 2022-1-11 16:31
所以叫时钟不准啊,你片内的主频不准,其他补偿啥的都没用的.
用久了主频还是会自己跑.
比较精准的就是外 ...

我原本用RTC做的,后面出现了这个帖子的问题 http://www.openedv.com/forum.php ... p;page=1#pid1244805 才改用定时器试试的
回复

使用道具 举报

33

主题

82

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
277
金钱
277
注册时间
2020-1-19
在线时间
94 小时
 楼主| 发表于 2022-1-11 17:13:22 | 显示全部楼层
聚东风 发表于 2022-1-11 16:31
所以叫时钟不准啊,你片内的主频不准,其他补偿啥的都没用的.
用久了主频还是会自己跑.
比较精准的就是外 ...

我原本定时是打算RTC时钟初始化为0:0:0,闹钟设置一个定值,然后触发闹钟中断后将时钟重置为0:0:0,但是由于重置时那个亚秒无法被设置,导致还是会有误差
回复

使用道具 举报

80

主题

931

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3348
金钱
3348
注册时间
2013-5-28
在线时间
468 小时
发表于 2022-1-12 08:12:12 | 显示全部楼层
时钟不准带来偏差更大,RTC如果确实如你所说,简单的你重装载时让重装载值少一秒就好了啊
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-20 18:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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