打印

[MCU] 定时器的高效用法

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

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

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

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

这些其实都是和操作系统学的,OS下很多这种API
7
| 2019-8-9 23:04 | 只看该作者
时间触发嵌入式系统设计模式 了解下
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /2 下一条

在线客服 快速回复 返回顶部 返回列表
pc蛋蛋官方网址 pc蛋蛋平台 pc蛋蛋网址 pc蛋蛋官方网址 pc蛋蛋官方网站 pc蛋蛋官方网址 pc蛋蛋注册 pc蛋蛋官方网站 pc蛋蛋官方网站 pc蛋蛋平台