系统节拍与软件定时器-嵌入式微系统连载之八

发布时间:2016-3-1 09:31    发布者:designapp
关键词: 嵌入式微系统 , 定时器 , MCU51
  系统节拍是非常重要的一个设备,在早期的MCU51和ARM7芯片中,没有专门的系统节拍,往往由一路硬件定时器来实现其功能,到了Cortex系列,ARM提供了Systick硬件定时器专门用于系统节拍,可见现在的编程对系统节拍的依赖性。
  系统节拍的概念比较早的出现在OS中,产生固定间隔的重复中断,用于任务的超时等待或者任务延时多少个节拍周期用。在前后台系统中,也引入了系统节拍,比如msOS-Mcu51版本很早就引入了系统节拍,实现按键扫描、虚拟定时器等功能。此外还有一种基于时间片编程的架构,直接采用系统节拍来处理一些对时间精度要求比较高的需求。常用时间间隔是5mS或者10mS,也就是说每秒钟200次或者100次节拍。随着处理器速度的提高,尤其是在一些控制要求高的地方,可以采用1mS,msOS甚至采用了0.1mS的高频率系统节拍。这个具体的时间间隔跟项目需求有关,可以根据自己的项目灵活配置,但在满足需求的情况下,不建议设置的太高,否则影响处理器效率。
  msOS中的很多设备,都需要基于系统节拍来运行,比如按键、软件定时器。这些设备不需要太高的系统时钟,按键只需要每秒钟100次,软件定时器需要每秒钟1000次节拍,但msOS因为面向时间精度要求比较高的行业,所以默认的系统节拍时间间隔设置的很短,达到0.1ms,也就是说一秒钟一万次节拍。所以需要对系统节拍进行分频处理,但因为系统节拍真实的间隔是0.1ms,以STM32工作在72MHz为例,这么短的时间最多只能执行7200个CPU指令,为了防止各个低速设备都挤在同一个系统节拍内运行,超过7200个指令,所以在分频的时候,不要把所有的设备都放在同一个节拍里面,需要把各个设备分散到各个节拍中运行。
  Device_systick.c是系统节拍设备,它除了分散节拍直接调用固定的运行在其上的设备外,还提供了注册机制给上层应用程序提供系统节拍,具体如下:
  


  


  定时器是一个项目中经常用到的设备,比如动画设计、闹钟、定时工作、超时处理等。然而一个处理器往往自带的硬件定时器是非常有限的,并且功能也比较有限,不能灵活应用,所以需要通过系统节拍虚拟出多路软件定时器。
  软件定时器主要定时器服务、启动、停止三个函数组成,默认支持8个软件定时器,以下面代码为例加以说明。
  


  FunctionCallback为定时器超时后的回调执行函数,是软件定时器初始化的第三个参数,超时时间到就执行这个函数,第二个参数1000为超时的时间,单位是软件定时器的系统时钟,msOS采用的是1mS,1000也就是一秒钟。第一个参数为回调函数执行的位置,TimerMessageHandle表示在业务逻辑中执行,适合处理代码量大的,处理时间长的函数。TimerSystickHandle表示在系统节拍中直接处理,系统节拍内一般适合代码量少的,处理时间短的函数。软件定时器功能非常有用,它的结构也非常简单,用户看懂之后可以任意扩展其功能完成自己特殊的用途。
                               
                                                               
                               
               
本文地址:https://www.eechina.com/thread-161500-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

  • Microchip视频专区
  • 想要避免发生灾难,就用MPLAB® SiC电源仿真器!
  • 了解一下Microchip强大的PIC18-Q24 MCU系列
  • 5分钟详解定时器/计数器E和波形扩展!
  • 为何选择集成电平转换?
  • 贸泽电子(Mouser)专区

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表