【rtx操作系统教程】第12章 系统时钟节拍和时间管理

【rtx操作系统教程】第12章 系统时钟节拍和时间管理

ID:5378603

大小:733.24 KB

页数:18页

时间:2017-12-08

【rtx操作系统教程】第12章 系统时钟节拍和时间管理_第1页
【rtx操作系统教程】第12章 系统时钟节拍和时间管理_第2页
【rtx操作系统教程】第12章 系统时钟节拍和时间管理_第3页
【rtx操作系统教程】第12章 系统时钟节拍和时间管理_第4页
【rtx操作系统教程】第12章 系统时钟节拍和时间管理_第5页
资源描述:

《【rtx操作系统教程】第12章 系统时钟节拍和时间管理》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、第12章系统时钟节拍和时间管理本章节为大家讲解RTX操作系统的时钟节拍和时间管理函数,其中时间管理函数是RTX的基本函数,初学者务必要掌握。本章教程配套的例子含Cortex-M3内核的STM32F103和Cortex-M4内核的STM32F407。12.1RTX的时钟节拍12.2RTX的时间管理12.3实验例程说明12.4总结12.1RTX的时钟节拍任何操作系统都需要提供一个时钟节拍,以供系统处理诸如延时,超时等与时间相关的事件。时钟节拍是特定的周期性中断。这个中断可以看做是系统心跳。中断之间的时间间隔取决于不同的应用,一般是1ms–100m

2、s。时钟的节拍中断使得内核可以将任务延迟若干个时钟节拍,以及当任务等待事件发生时,提供等待超时等依据。时钟节拍率越快,系统的额外开销就越大。对于Cortex-M3内核的STM32F103和Cortex-M4内核的STM32F407,教程配套的例子都是用的滴答定时器来实现系统时钟节拍的。滴答定时器SystickSysTick定时器被捆绑在NVIC中,用于产生SysTick异常(异常号:15),滴答定时器是一个24位的递减计数器,支持中断。使用比较简单,专门用于给操作系统提供时钟节拍。RTX的系统时钟节拍可以在配置向导里面设置:2015年12月

3、10日版本:1.0第1页共18页武汉安富莱电子有限公司WWW.ARMFLY.COM安富莱STM32-V4开发板RTX教程TickTimerConfigurationHardwaretimerCoreSysTick表示选择系统滴答定时器,因为M3/M4内核带有滴答定时器,一般情况下都是选用滴答定时器作为系统时钟节拍。PeripheralTimer表示使用外设定时器。Timerclockvalue表示定时器主频,单位Hz。Timertickvalue表示系统时钟节拍周期,单位us。12.2RTX的时间管理时间管理功能是RTX操作系统里面比

4、较基本的功能,同时也是非常有必要掌握好的。2015年12月10日版本:1.0第2页共18页武汉安富莱电子有限公司WWW.ARMFLY.COM安富莱STM32-V4开发板RTX教程12.2.1时间延迟RTX中的时间延迟函数主要有以下两个作用:为周期性执行的任务提供延迟。对于抢占式调度器,让高优先级任务可以通过时间延迟函数释放CPU使用权,从而让低优先级任务可以得到执行。下面我们通过如下的框图来说明一下延迟函数对任务运行状态的影响,让大家有一个形象的认识。运行条件:仅对任务Task1的运行状态做说明。调度器支持时间片调度和抢占式调度。运行

5、过程描述如下:起初任务Task1处于运行态,调用os_dly_wait函数后进入到挂起状态,也就是wait状态。os_dly_wait函数设置的延迟时间到,由于任务Task1不是当前就绪的最高优先级任务,所以不能进入到运行状态,只能进入到就绪状态,也就是ready状态。一段时间后,调度器发现任务Task1是当前就绪的最高优先级任务,从而任务从就绪态切换到运行态。由于时间片调度,任务Task1由运行态切换到就绪态。上面就是一个简单的任务运行状态的切换过程。12.2.2RTX的延迟函数使用如下4个函数可以实现RTX的延迟:os_dly_

6、wait()os_itv_set()os_itv_wait()2015年12月10日版本:1.0第3页共18页武汉安富莱电子有限公司WWW.ARMFLY.COM安富莱STM32-V4开发板RTX教程os_time_get()关于这4个函数的讲解及其使用方法可以看教程第3章3.3小节里面说的参考资料rlarm.chm文件下面我们对这四个函数依次进行说明:12.2.3函数os_dly_wait函数原型:voidos_dly_wait(U16delay_time);/*延迟时间长度*/函数描述:函数os_dly_wait用于任务的延迟。参数

7、delay_time用于设置延迟的时钟节拍个数,范围1-0xFFFE。使用这个函数要注意以下几个问题1.同一个任务中os_dly_wait和os_itv_wait不能混合调用,只能选择其中一个。使用举例:#include__taskvoidtask1(void){..os_dly_wait(20);..}2015年12月10日版本:1.0第4页共18页武汉安富莱电子有限公司WWW.ARMFLY.COM安富莱STM32-V4开发板RTX教程12.2.4函数os_itv_set函数原型:voidos_itv_set(U16inter

8、val_time);/*周期唤醒的时间间隔*/函数描述:函数os_itv_set用于设置周期性延迟的时间间隔,此函数必须配合os_itv_wait函数一起使用。用户

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。