[MCU] 定时器的高效用法

[复制链接]
1369|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位及以上的定时器
 楼主| hahaheiyou 发表于 2019-8-9 09:26 | 显示全部楼层
ayb_ice 发表于 2019-8-9 09:20
还有一种方法,与这类似,
直接让定时器自由运行,通过读取定时器计数值,两次相减得到差值,时间精度高 ...

这种方法也非常实用
ayb_ice 发表于 2019-8-9 09:33 | 显示全部楼层
hahaheiyou 发表于 2019-8-9 09:26
这种方法也非常实用

这些其实都是和操作系统学的,OS下很多这种API
coody 发表于 2019-8-9 23:04 | 显示全部楼层
时间触发嵌入式系统设计模式 了解下
嘿嘿嘿· 发表于 2020-5-8 12:27 | 显示全部楼层
感谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

22

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部