时间管理就是一种建立在时钟节拍上,对操作系统任务的运行实现时间上管理的一种系统内核机制。

常用以下五个函数:

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 时间管理(二)的更多相关文章

  1. uc/os iii移植到STM32F4---IAR开发环境

    也许是先入为主的原因,时钟用不惯Keil环境,大多数的教程都是拿keil写的,尝试将官方的uc/os iii 移植到IAR环境. 1.首先尝试从官网上下载的官方移植的代码,编译通过,但是执行会报堆栈溢 ...

  2. uC/OS - III 移植 IAR平台

    关于移植uC/OS-III 网上已经有很多教程了此处只是做个记录 首先下载源码然后解压得到下面的文件: 然后在模版工程里新建各种文件夹: 最后全部都添加进工程: OK了,编译一下,惊呆了,竟然 0错误 ...

  3. 2 时间管理和内存管理

    时间管理 uC/OS-II的时间管理是通过定时中断来实现的,该定时中断一般为10毫秒或100毫秒发生一次(这个时间片段是OS的作者推荐的,大家可以参考邵贝贝翻译的<嵌入式实时操作系统ucos-I ...

  4. uC/OS-III 时钟节拍,时间管理,时间片调度

    uC/OS-III 时钟节拍,时间管理,时间片调度   时钟节拍 时钟节拍可谓是 uC/OS 操作系统的心脏,它若不跳动,整个系统都将会瘫痪. 时钟节拍就是操作系统的时基,操作系统要实现时间上的管理, ...

  5. OS之内存管理 --- 虚拟内存管理(二)

    关于虚拟内存管理之前的请看:OS之内存管理 - 虚拟内存管理(一) 帧分配 每个进程对的最小帧数是由操作系统的体系结构决定的,但是最大帧数是由可用物理内存的数量决定的.所以在这之间,对于进程的帧的分配 ...

  6. uC/OS II原理分析及源码阅读(一)

    uC/OS II(Micro Control Operation System Two)是一个可以基于ROM运行的.可裁减的.抢占式.实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和 ...

  7. 基于μC/OS—III的CC1120驱动程序设计

    基于μC/OS—III的CC1120驱动程序设计 时间:2014-01-21 来源:电子设计工程 作者:张绍游,张贻雄,石江宏 关键字:CC1120   嵌入式操作系统   STM32F103ZE   ...

  8. 在STM32F401上移植uC/OS的一个小问题 [原创]

    STM32F401xx是意法半导体新推出的Cortex-M4内核的MCU,相较于已经非常流行的STM32F407xx和STM32F427xx等相同内核的MCU而言,其特点是功耗仅为128uA/MHz, ...

  9. μC/OS-Ⅲ系统的时间管理函数和定时器

    一.时间管理函数 μC/OS-Ⅲ系统提供一些列时间管理服务函数: 1.OSTimeDly():任务延时n个时钟节拍. 2.OSTimeDlyHMSM():任务延时指定的时间,采用“时:分:秒:毫秒”方 ...

随机推荐

  1. 2019 ICPC南京网络预选赛 I Washing clothes 李超线段树

    题意:有n个人,每个人有一件衣服需要洗,可以自己手洗花费t时间,也可以用洗衣机洗,但是洗衣机只有一台,即每个时刻最多只能有·一个人用洗衣机洗衣服.现在给你每个人最早可以开始洗衣服的时间,问当洗衣机的洗 ...

  2. 洛谷P1196[NOI2002]银河英雄传说-并查集扩展

    银河英雄传说 题意:在并查集的基础上,还要求出同一集合的两个点的距离 这道题用并查集自己是知道的,但是竟然可以这么骚的操作. 下面转自大佬的查详细题解 初见这道题,首先想到的方法当然是直接模拟,模拟每 ...

  3. SDU暑期集训排位(5)

    SDU暑期集训排位(5) A. You're in the Army Now 题意 类似选志愿.每个人有 mark,有优先级从高到低的志愿. 做法 定睛一看,鲨鼻题.然后 WA. 为什么会 WA 呢? ...

  4. hdu5491 The Next 模拟

    Let LL denote the number of 1s in integer DD’s binary representation. Given two integers S1S1 and S2 ...

  5. 自定义Hive UDAF 实现相邻去重

    内置的两个聚合函数(UDAF) collect_list():多行字符串拼接为一行collect_set():多行字符串拼接为一行并去重多行字符串拼接为一行并相邻去重UDAF:Concat() con ...

  6. 使用xampp将angular项目运行在web服务器

    需求 在开发angular项目时,因为需要做自适配以适应不同的屏幕,而我的电脑只有1366的.所以我现在需要在本地将angular项目运行在xampp上,然后用手机开热点,给本机和另一台大屏电脑或手机 ...

  7. go 学习笔记之学习函数式编程前不要忘了函数基础

    在编程世界中向来就没有一家独大的编程风格,至少目前还是百家争鸣的春秋战国,除了众所周知的面向对象编程还有日渐流行的函数式编程,当然这也是本系列文章的重点. 越来越多的主流语言在设计的时候几乎无一例外都 ...

  8. ubuntu下配置JDK,Eclipse,android开发环境

    前言:由于我的电脑是64位的,所以下面使用的jdk ; eclipse : 包括我安装的 ubuntu12.0.4LTS 都是64位的:如果你是32位请下载32位的系统以及jdk,eclipse等软件 ...

  9. Hive数据导入/导出

    1.1 导入/导出规则 EXPORT 命令导出数据表或分区,与元数据一起输出到指定位置.又可以从这个输出位置移动到不同的Hadoop 或Hive 实例中,并且使用IMPORT 命令导入. 当导出一个分 ...

  10. hbase数据备份或者容灾方案

    HBase的数据备份或者容灾方案有这几种:Distcp,CopyTable,Export/Import,Snapshot,Replication,以下分别介绍(以下描述的内容均是基于0.94.20版本 ...