首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

求助定时器的使用

求助定时器的使用

求助定时器的使用
如果在主循环中多出用到定时,怎么解决?
我以前的做法是,设一个定时器中断,然后在中断程序中放置多个计数器++,用到不同地方定时,用完清零。
但是,我现在觉得这样做用到的全局变量太多,如果定时器周期变化,改起来也麻烦。
不知道大家有什么高招,指点小弟下!!!!
移植UCOS-II之类的操作系统吧,任务管理能方便很多。
操作系统在一些项目中不一定好用,关于楼主的问题,目前我还是这么用的,周期变化后不知道LZ所以的改起来麻烦事什么概念,有多少个全局变量?
我想改起来麻烦,还是次要的。
我主要是想让程序更加模块化,所以想到了这!
那我给大家说一种方法,不需要全局变量的,不过有局限性
在中断设置一计数器和一函数用于读取计数值,在定时处设一函数计算上次循环读取的计数值与当前计数值之差,再把差累加用于定时。语言不好描述,见谅
ISR
{
Ticks++;
}
GetTicks
{
return Ticks;
}
DifferenceCal
{
difference = currentTicks - lastTicks;
}

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