关于UCOSIII操作系统定时器讲解总结--防迷路,通过博客收藏

关于UCOSIII操作系统定时器讲解总结:

本问介绍内容:

  • 主要函数
  • 定时器知识介绍
  • 实现原理

主要函数:

函数名函数功能
OSTmrCreate()创建定时器并指定其运行模式
OSTmrDel()删除定时器
OSTmrRemainGet()获取定时器的剩余时间
OSTmrStart()启动(或重新启动)定时器计数
OSTmrStartGet()获取当前定时器状态
OSTmrStop()停止计数器倒计时

函数详细介绍:

创建定时器并指定其运行模式
void  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)
参数名参数介绍参数选项
*p_tmr指定是定时器的指针定时器对象
*p_name定时器名称,ASCII定时器的名称
dly初始化延时时间第一次启动定时器的推迟时间
period重复周期启动循环模式下的定时器重复时间,单次模式为0
opt选项OS_OPT_TMR_PERIODIC 单次模式OS_OPT_TMR_ONE_SHOT 循环模式
p_callback指向回调函数的指针定时器时间到触发时的回调函数
*p_callback_arg回调函数参数定时器时间到了调用的回调函是传给回调函数的参数
   *p_err|错误返回码|返回定时器错误码
删除定时器
CPU_BOOLEAN   OSTmrDel (OS_TMR   *p_tmr,
                        OS_ERR   *p_err);
 获取定时器的剩余时间
OS_TICK    OSTmrRemainGet  (OS_TMR    *p_tmr,
                            OS_ERR    *p_err);
启动(或重新启动)定时器计数
CPU_BOOLEAN   OSTmrStart  (OS_TMR   *p_tmr,
                          OS_ERR   *p_err);
获取当前定时器状态
OS_STATE      OSTmrStateGet  (OS_TMR  *p_tmr,
                              OS_ERR  *p_err);
停止计数器倒计时
CPU_BOOLEAN   OSTmrStop  (OS_TMR  *p_tmr,
                          OS_OPT  opt,
                          void    *p_callback_arg,
                          OS_ERR   *p_err);

参数名参数介绍参数选项
*p_tmr指定是定时器的指针定时器对象
opt停止定时器的选项OS_OPT_TMR_CALLBACK 无选项 OS_OPT_TMR_CALLBACK_ARG 执行回调函数,使用创建时的参数 OS_OPT_TMR_NONE 执行回调函数,使用新的参数
*p_callback_arg传递给回调函数新的参数值此值会传递给新的回调函数
*p_err错误返回码返回定时器错误码

定时器错误码介绍:
注意介绍返回的错误码有利于代码的稳定性。


定时器知识介绍

总结 UCOSIII的定时器是又硬件定时器产生中断发送信号给定时器任务,定时器任务接受到信号更新所有定时器数据块的剩余时间,如果时间耗尽则直接调用回调函数,当然回调函数得存在,注意这说明所有的定时器回调函数是属于同个任务的,也就意味着回调函数和创建这个定时器的任务不在同一个任务。。。。
所以我们尽量在回调函数处理极其简单的事情。
值得一提的是UCOSIII在进行定时器任务的时候回关闭任务调度器,所以在回调函数内部不能进行阻塞的方式等待互斥量、延时,也就意味我们不能进行全局变量的修改和不可重入函数得调用,否则会导致数据的安全性问题。

实现原理

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值