Board logo

标题: 求助定时器的使用 [打印本页]

作者: sdkdliwenyu    时间: 2010-5-5 13:29     标题: 求助定时器的使用

求助定时器的使用
如果在主循环中多出用到定时,怎么解决?
我以前的做法是,设一个定时器中断,然后在中断程序中放置多个计数器++,用到不同地方定时,用完清零。
但是,我现在觉得这样做用到的全局变量太多,如果定时器周期变化,改起来也麻烦。
不知道大家有什么高招,指点小弟下!!!!
作者: Hunter.Cheung    时间: 2010-5-5 14:36

移植UCOS-II之类的操作系统吧,任务管理能方便很多。
作者: mcu2007    时间: 2010-5-5 16:00

操作系统在一些项目中不一定好用,关于楼主的问题,目前我还是这么用的,周期变化后不知道LZ所以的改起来麻烦事什么概念,有多少个全局变量?
作者: sdkdliwenyu    时间: 2010-5-6 09:52

我想改起来麻烦,还是次要的。
我主要是想让程序更加模块化,所以想到了这!
那我给大家说一种方法,不需要全局变量的,不过有局限性
在中断设置一计数器和一函数用于读取计数值,在定时处设一函数计算上次循环读取的计数值与当前计数值之差,再把差累加用于定时。语言不好描述,见谅
ISR
{
Ticks++;
}
GetTicks
{
return Ticks;
}
DifferenceCal
{
difference = currentTicks - lastTicks;
}

some routine
{
DifferenceCal;
GetTicks;
xxx_Timer+=difference;
.
.
.
..
}
局限在于 1,定时器周期必须小于程序循环周期,diference才不至于每次都是零,且定时周期越小精度越高  2,初始时,会有问题,需要小心避免。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0