分享

ucosIII 软件定时器

 卤煮小鱼 2016-09-12

本文内容简介:
包含软件定时器的介绍。回调函数的介绍。以及软件定时器相关的部分API讲解
重点在于最后的软件定时器操作步骤

软件定时器

  • 定时器本质是递减计数器,当计数器减到零时可以触发某种动作的执行,这个动作通过回调函数来实现。当定时器计时完成时,定义的回调函数就会被立即调用,应用程序可以有任意数量的定时器,UCOSIII中定时器的时间分辨率由一个宏OS_CFG_TMR_TASK_RATE_HZ:表示步长,比如一次100ms,那么10次就是1s,单位为HZ,默认为100Hz。
    注意!一定要避免在回调函数中使用阻塞调用或者可以阻塞或删除定时器任务的函数。
  • 使能宏:通过OS_CFG_TMR_EN 使能为 1
  • 回调函数?
    回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方法直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。

API:创建,删除,启动,停止,得到时间,得到状态

API

创建定时器

OSTmrCreate (OS_TMR               *p_tmr, //结构体描述定时器
             CPU_CHAR             *p_name,//名字
             OS_TICK               dly,   //初始延时的第一个周期
             OS_TICK               period,//除了第一个周期,之后的所有周期
             OS_OPT                opt,   //选择单次还是周期定时器
             OS_TMR_CALLBACK_PTR   p_callback,//回调函数
             void                 *p_callback_arg,//回调函数的参数
             OS_ERR               *p_err)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

定时器开始

CPU_BOOLEAN  OSTmrStart (OS_TMR  *p_tmr,
                         OS_ERR  *p_err)
  • 1
  • 2

定时器结束

CPU_BOOLEAN   OSTmrStop (OS_TMR                *p_tmr,//结构体
                         OS_OPT                 opt,  //CALLBACK在没有计数到0的时候,就执行了stop也可以执行回调函数
                         void                  *p_callback_arg,//回调函数新参数
                         OS_ERR                *p_err);
  • 1
  • 2
  • 3
  • 4

单次和周期定时器

  • 单次定时器中dly有效,period是无效的,并且单次定时器也可以多次start
  • 周期定时器:1. dly为0就是无初始延时定时器 2.dly有值就是有初始延时周期定时器

软件定时器操作步骤

1-使能 宏
2-定义tmr1,2 以及 相应回调函数:void tmr1_callback(void *p_tmr, void *p_arg);
3-OSTmrCreate创建定时器
4-在任务中使用start和stop

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多