zoukankan      html  css  js  c++  java
  • 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 () 函数用于设置当前的时钟节拍计数值,但必须慎用该函数。

  • 相关阅读:
    【项目】项目41
    【项目】项目40
    【项目】项目39
    【项目】项目38
    【项目】项目37
    15-155. Min Stack
    14-160. Intersection of Two Linked Lists
    13-169. Majority Element
    12-206. Reverse Linked List
    11-215. Kth Largest Element in an Array
  • 原文地址:https://www.cnblogs.com/lailai-laird/p/11627745.html
Copyright © 2011-2022 走看看