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
大家对于定时器的用法,还有没有其它更加高效的用法呢?欢迎在评论区留言。
|