uC/OS-III 时间管理(二)
时间管理就是一种建立在时钟节拍上,对操作系统任务的运行实现时间上管理的一种系统内核机制。
常用以下五个函数:
OSTimeDly()
OSTimeDlyHMSM()
OSTimeDlyResume()
OSTimeGet ()
OSTimeSet ()
下面来介绍各个函数的作用。
OSTimeDly()
OSTimeDly() 函数用于停止当前任务进行的运行,延时一段时间后再运行(和定时器中断有些类似)。OSTimeDly()函数的信息如下表所示。
OSTimeDly() 函数中,如果函数的实参和调用场合均合法,就会调用OS_TickListInsert()函数将当前任务插入到节拍列表进行管理,如果OS_TickListInsert() 函数将当前任务插入节拍列表成功的话,就会调用OS_RdyListRemove() 函数将当前任务从任务就绪列表中移除,并将系统切换至其他任务,等到延时的时间到来,再根据优先级决定是否将CPU使用权分配给该任务。这就是OSTimeDly() 函数实现任务延时的大致过程。
OSTimeDlyHMSM()
OSTimeDlyHMSM() 函数与OSTimeDly() 函数的功能类似,也是用于停止当前任务进行的运行,延时一段时间后再运行,只是OSTimeDlyHMSM()函数比较于OSTimeDly()的定时格式不一样而已。但是,用户若要使用OSTimeDlyHMSM() 函数,得事先将宏OS_CFG_TIME_DLY_HMSM_EN(位于“os_cfg.h”)设为1。
OSTimeDlyHMSM () 函数的信息如下表所示。
OSTimeDlyHMSM() 函数中, 如果函数的实参和调用场合均合法, 就会调用OS_TickListInsert() 函数将当前任务插入到节拍列表进行管理。如果OSTimeDlyHMSM() 函数调用OS_TickListInsert() 函数将当前任务插入节拍列表成功的话,就会调用OS_RdyListRemove() 函数将当前任务从任务就绪列表中移除,并将系统切换至其他任务。(原理和OSTimeDly()的原理一样)
OSTimeDlyResume()
OSTimeDlyResume () 函数用于直接结束其他任务(非当前任务)的延时。用户若要使用OSTimeDlyResume () 函数,得事先将宏OS_CFG_TIME_DLY_RESUME_EN(位于“os_cfg.h”)设为1。,OSTimeDlyResume () 函数的操作对象为其他任务,不能是当前任务。
OSTimeDlyResume () 函数的信息如下表所示。
OSTimeGet ()
OSTimeGet () 函数用于获取当前的时钟节拍计数值。
OSTimeSet ()
OSTimeSet () 函数用于设置当前的时钟节拍计数值。(慎用,一般别用)
总结一下:
1.uC/OS 系统的时间事件主要有延时和等待。当任务要延时或有期限等待时,就会被插入到节拍列表里进行管理。每当时钟节拍到来时,系统就检查节拍列表中是否有任务的延时或者等待已经到期。如果有任务已经期满,则改变该任务的状态,去掉它包含的延时或等待状态,并将任务从节拍列表移除。
2.延时的函数主要有OSTimeDly() 和OSTimeDlyHMSM()。前者以时钟节拍作为时间参数,后者直接以时分秒和毫秒作为时间参数,具有更好的交互性。其实两者的原理都一样,OSTimeDlyHMSM() 函数的时间参数最终也是要转换成节拍数的。
3.OSTimeDlyResume () 函数可以用于结束其他任务因调用OSTimeDly() 或OSTimeDlyHMSM() 导致的延时。但必须切记,OSTimeDlyResume () 函数的操作对象为其他任务,不能是当前任务。
4.OSTimeGet () 函数用于获取当前的时钟节拍计数值。OSTimeSet () 函数用于设置当前的时钟节拍计数值,但必须慎用该函数。
uC/OS-III 时间管理(二)的更多相关文章
- uc/os iii移植到STM32F4---IAR开发环境
也许是先入为主的原因,时钟用不惯Keil环境,大多数的教程都是拿keil写的,尝试将官方的uc/os iii 移植到IAR环境. 1.首先尝试从官网上下载的官方移植的代码,编译通过,但是执行会报堆栈溢 ...
- uC/OS - III 移植 IAR平台
关于移植uC/OS-III 网上已经有很多教程了此处只是做个记录 首先下载源码然后解压得到下面的文件: 然后在模版工程里新建各种文件夹: 最后全部都添加进工程: OK了,编译一下,惊呆了,竟然 0错误 ...
- 2 时间管理和内存管理
时间管理 uC/OS-II的时间管理是通过定时中断来实现的,该定时中断一般为10毫秒或100毫秒发生一次(这个时间片段是OS的作者推荐的,大家可以参考邵贝贝翻译的<嵌入式实时操作系统ucos-I ...
- uC/OS-III 时钟节拍,时间管理,时间片调度
uC/OS-III 时钟节拍,时间管理,时间片调度 时钟节拍 时钟节拍可谓是 uC/OS 操作系统的心脏,它若不跳动,整个系统都将会瘫痪. 时钟节拍就是操作系统的时基,操作系统要实现时间上的管理, ...
- OS之内存管理 --- 虚拟内存管理(二)
关于虚拟内存管理之前的请看:OS之内存管理 - 虚拟内存管理(一) 帧分配 每个进程对的最小帧数是由操作系统的体系结构决定的,但是最大帧数是由可用物理内存的数量决定的.所以在这之间,对于进程的帧的分配 ...
- uC/OS II原理分析及源码阅读(一)
uC/OS II(Micro Control Operation System Two)是一个可以基于ROM运行的.可裁减的.抢占式.实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和 ...
- 基于μC/OS—III的CC1120驱动程序设计
基于μC/OS—III的CC1120驱动程序设计 时间:2014-01-21 来源:电子设计工程 作者:张绍游,张贻雄,石江宏 关键字:CC1120 嵌入式操作系统 STM32F103ZE ...
- 在STM32F401上移植uC/OS的一个小问题 [原创]
STM32F401xx是意法半导体新推出的Cortex-M4内核的MCU,相较于已经非常流行的STM32F407xx和STM32F427xx等相同内核的MCU而言,其特点是功耗仅为128uA/MHz, ...
- μC/OS-Ⅲ系统的时间管理函数和定时器
一.时间管理函数 μC/OS-Ⅲ系统提供一些列时间管理服务函数: 1.OSTimeDly():任务延时n个时钟节拍. 2.OSTimeDlyHMSM():任务延时指定的时间,采用“时:分:秒:毫秒”方 ...
随机推荐
- Unity3D 基于ShadowMap的平滑硬阴影
前言 传统的ShadowMap在明暗边缘处都会有很难看的锯齿,因此一般得到的结果会比较难看,常规的解决办法都会在使用ShadowMap渲染阴影的时候通过背面剔除把这种缺陷隐藏掉,最后剩下一个影子.但是 ...
- d3.js 教程 模仿echarts柱状图
由于最近工作不是很忙,隧由把之前的charts项目用d3.js重写的一下,其实d3.js文档很多,但是入门不是很难,可是想真的能做一个完成的,交互良好的图还是要下一番功夫的.今天在echarts找到了 ...
- ZOJ-3964 Yet Another Game of Stones
Yet Another Game of Stones 题意: Alice 和 Bob 在进行取石子游戏, 现在一共有n堆石子, 每堆石头有ai个, 然后每堆石头有一个bi属性, 如果bi == 0, ...
- UVA - 315 Network(tarjan求割点的个数)
题目链接:https://vjudge.net/contest/67418#problem/B 题意:给一个无向连通图,求出割点的数量.首先输入一个N(多实例,0结束),下面有不超过N行的数,每行的第 ...
- CF1005E1 Median on Segments (Permutations Edition) 思维
Median on Segments (Permutations Edition) time limit per test 3 seconds memory limit per test 256 me ...
- spark与mapreduce的区别
spark是通过借鉴Hadoop mapreduce发展而来,继承了其分布式并行计算的优点,并改进了mapreduce明显的缺陷,具体表现在以下几方面: 1.spark把中间计算结果存放在内存中,减少 ...
- KMP算法C代码
贴上C代码作参考,关于算法,可以参考网上的博文,但不要参考太多,一两篇相近的即可. #include <stdio.h> #include <stdlib.h> #includ ...
- 开源导入导出通用库Magicodes.ExporterAndImporter发布
导入导出通用库 Magicodes.ExporterAndImporter为心莱团队封装的导入导出通用库,并且仍在跟随项目不断地打磨. GitHub地址: https://github.com/xin ...
- JVM垃圾回收?看这一篇就够了!
深入理解JVM垃圾回收机制 1.垃圾回收需要解决的问题及解决的办法总览 1.如何判定对象为垃圾对象 引用计数法 可达性分析法 2.如何回收 回收策略 标记-清除算法 复制算法 标记-整理算法 分带收集 ...
- Windows 笔记 - 用到的设置
博客地址:http://www.moonxy.com 在日常使用 Windows 的过程中,或多或少会遇到一些设置,记录下来,以备以后使用. 1. 不重启电脑使 hosts 生效的解决方法 有时候需要 ...