zoukankan      html  css  js  c++  java
  • uC/OS-III 软件定时器(三)

      软件定时器是uC/OS 操作系统的一个内核对象,软件定时器是基于时钟节拍和系统管理创建的软件性定时器,理论上可以创建无限多个,操作简单,但精准度肯定比硬件定时稍逊一筹。

    原理和实现过程

    要用到的函数:

      OSTmrCreate ()  //创建定时器

      OSTmrDel ()   //删除定时器

      OSTmrStart ()  //开启定时器

      OSTmrStop ()  //停止定时器

     

    以下是四个函数的介绍,不看可以跳过。

    使用定时器前先使能,软件定时器的使能位于“os_cfg.h”。

     

     

     其有关参数的配置位于“os_cpu_app.h”。

     

     

    OSTmrCreate ()

    要使用uC/OS 的软件定时器必须先声明和创建软件定时器,调用OSTmrCreate () 函数可以创建一个软件定时器。OSTmrCreate () 函数的信息如下表所示。

     

     

     

     

     

    OSTmrDel()

    OSTmrDel()函数用于删除一个软件定时器。OSTmrDel () 函数的信息如下表所示。

     

     

     

     

     

    OSTmrStart()

    创建完软件定时器后,如果要使用该软件定时器,需要调用OSTmrStart () 函数启动该软件定时器。OSTmrStart () 函数的信息如下表所示。

     

    OSTmrStop()

      OSTmrStop()函数用于停止一个软件定时器。软件定时器被停掉之后可以调用OSTmrStart () 函数重启,但是重启之后定时器是从头计时,而不是接着上次停止的时刻继续计时。OSTmrStop () 函数的信息如下表所示。

     

    总结:

      1.要使用软件定时器,首先要声明一个OS_TMR对象,并通过OSTmrCreate()函数创建该软件定时器。软件定时器分OS_OPT_TMR_ONE_SHOT 和OS_OPT_TMR_PERIODIC 两种类型。前者相当于相当于硬件定时器的突发模式,执行的是一次性定时,定时完成之后软件定时器就停止工作,需要再次启动才能再次工作。后者相当于硬件定时器的周期模式,具有周期重载值,可以不断周期工作,不需再次启动。

      2.软件定时器创建完成之后,还无法立即工作,需要调用OSTmrStart()函数来启动它投入工作。OSTmrStop()函数可以停止一个软件定时器,但它只是被停止了定时,而并没有被删除。如果还想继续使用该软件定时器定时,调用OSTmrStart()函数启动它即可,但启动后是重新定时,而不是紧接着停止时的时间继续计时。

      3.OSTmrDel()函数用于删除一个软件定时器,删除之后该软件定时器不能再被使用。

    软件定时和延时任务的区别:

      调用OSTimeDl()或者OSTimeDlyHMSM(),意味着该任务CPU使用权会被没收,然而你开启一个定时器之后,该任务还可以使用CPU。例如:有延时任务A和普通任务B,任务A延时后就被剥夺CPU使用权了,直到任务A的延时时间到来。而在任务B中,开启了一个软件定时器,任务B还会继续执行下去,直到定时器的到来,程序去执行软件定时器调用的函数,执行完之后再回来接着执行任务B。所以总的区别就是,是否还拥有CPU的使用权利。

     

  • 相关阅读:
    jquery获取transform里面的值
    H5左滑删除JS插件
    IOS微信浏览器点击事件不起作用问题
    jquery获取不了ajax动态添加的内容的解决办法
    H5跟ios、android交互跟数据对接
    JS图片赖加载例子
    苹果手机浏览器下拉会闪动的解决办法
    jquery.rotate.js可选抽奖次数和中奖内容的转盘抽奖demo
    Html5的localStorage与sessionStorage五种循序渐进的使用方法
    tar 「解/壓」 包
  • 原文地址:https://www.cnblogs.com/lailai-laird/p/11628265.html
Copyright © 2011-2022 走看看