您的位置 首页 技术

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

系统节拍是非常重要的一个设备,在早期的MCU51和ARM7芯片中,没有专门的系统节拍,往往由一路硬件定时器来实现其功能,到了Cortex系列,ARM提供了Systick硬件定时器专门用于系统节拍,

  体系节拍对错常重要的一个设备,在前期的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表明在体系节拍中直接处理,体系节拍内一般合适代码量少的,处理时刻短的函数。软件守时器功用十分有用,它的结构也十分简略,用户看懂之后能够恣意扩展其功用完结自己特别的用处。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/jishu/117881.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部