|
本帖最后由 Inc_brza 于 2017-7-20 19:25 编辑 前言:这里不谈RTOS,而是主要针对裸机开发,很多时候,我们发现硬件定时器是不够用的,于是乎,很多时候, 程序员都会利用一个硬件定时器来产生N个软件定时器,误差是肯定有的,但是误差范围是可接受的,这样, 就能解决了很多时候定时器不够用的场合。 当然,楼主也遇到这种时候,所以就临时写了个软件定时器。 主题:这个软甲定时器采用了数组+回调的机制,硬件定时器产生tick,而主循环中获取tick产生计数,计数到达之后 调用定时器对应的回调函数。其中包含删除,注册的功能。 数据结构
一下是源码:
|
| 参与人数 1 | ST金币 -1 | 收起 理由 |
|---|---|---|
|
|
-1 | 神马都是浮云 |
微信公众号
手机版
定时器的中断周期一般是1ms,也就是这个软件定时器的误差是毫秒级的,中断的处理很短基本可以忽略,主要其他任务不阻塞,还是很准确的。
你的意思是把tick当成所有的计数器?如果这样子,定时器之间就不能相互独立了
定义个全局tick,定时加一,作为标准,定时器触发的标准就是注册时的tick+period