打印
[MCU]

定时器的高效用法

[复制链接]
1086|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hahaheiyou|  楼主 | 2019-8-8 19:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
for循环方式计时相信大家都用过,但是对于其中缺陷相信很多人也知道,那么我们怎么做可以避免这样的缺陷出现呢?
我的做法是在定时器中断里面累积时间基准time1,比如1mS,然后,在主循环里面将时间基准time1累加到相应的变量中。假设我像让一个LED每100ms做一次取反,就在主循环中增加一个变量ledT,每循环一次就将时间基准time1中的值累加到ledT中,直到ledT大于等于100mS。当然如果是操作系统的话这种方法就不完成适用了。
下面附上我一直用开的定时器相关的代码连接:
stm32实现的完整工程:http://dl.21ic.com/download/1565 ... thod_v0-314101.html
51核单片机实现,由于51核的IC太多了,不同的IC头文件也会不一样,所以需要各位自行移植:http://dl.21ic.com/download/ic-312729.html
大家对于定时器的用法,还有没有其它更加高效的用法呢?欢迎在评论区留言。

使用特权

评论回复

相关帖子

沙发
ayb_ice| | 2019-8-9 08:35 | 只看该作者
大部分人不都是这样吗

使用特权

评论回复
板凳
hahaheiyou|  楼主 | 2019-8-9 09:12 | 只看该作者
ayb_ice 发表于 2019-8-9 08:35
大部分人不都是这样吗

但是还有会有很多脑袋有坑的人,不是这样做的。

使用特权

评论回复
地板
ayb_ice| | 2019-8-9 09:20 | 只看该作者
hahaheiyou 发表于 2019-8-9 09:12
但是还有会有很多脑袋有坑的人,不是这样做的。

还有一种方法,与这类似,
直接让定时器自由运行,通过读取定时器计数值,两次相减得到差值,时间精度高,比较适合32位及以上的定时器

使用特权

评论回复
5
hahaheiyou|  楼主 | 2019-8-9 09:26 | 只看该作者
ayb_ice 发表于 2019-8-9 09:20
还有一种方法,与这类似,
直接让定时器自由运行,通过读取定时器计数值,两次相减得到差值,时间精度高 ...

这种方法也非常实用

使用特权

评论回复
6
ayb_ice| | 2019-8-9 09:33 | 只看该作者
hahaheiyou 发表于 2019-8-9 09:26
这种方法也非常实用

这些其实都是和操作系统学的,OS下很多这种API

使用特权

评论回复
7
coody| | 2019-8-9 23:04 | 只看该作者
时间触发嵌入式系统设计模式 了解下

使用特权

评论回复
8
嘿嘿嘿·| | 2020-5-8 12:27 | 只看该作者
感谢分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

22

帖子

0

粉丝