UCOSIII软件定时器

来源:互联网 发布:比特币钱包 知乎 编辑:程序博客网 时间:2024/06/17 12:17
在学习单片机的时候会使用定时器来做很多定时任务,这个定时器是单片机自带的,也就是硬件定时器,在UCOSIII中提供了软件定时器定时器的工作模式定时器其实就是一个递减技术器,当计数器递减到0的时候就会触发一个动作,这个动作就是回调函数,当定时器完成技术时就会自动调用这个回调函数。因此我们可以使用这个回调函数来完成一些设计。比如,定时10秒后打开某个外设等等,在毁掉函数中应该避免任何可以阻塞或者删除定时任务的函数。如果要是用定时器的话需要江红OS_CFG_TMR_DEL_EN定义为1.定时器的分辨率有我们定义的的系统节拍率OS_CFG_TICK_RATE_HZ决定,比如我们定义为200,系统时钟周期就是5ms,定时器的最小分辨率很定就是5ms。但是定时器的实际分辨率是通过宏OS_CFG_TMR_TASK_RATE_HZ定义的,这个值绝对不能大于OS_CFG_TICK_RATE_HZ。比如我们定义OS_CFG_TMR_TASK_RATE_HZ为100,则定时器的时间分辨率为10ms。有关UCOSIII定时器函数都在os_tmr.c文件中。创建一个定时器如果我们要使用定时器,肯定需要创建一个定时器,使用OSTmrCreate()函数来创建一个定时器,这个函数也用来确定定时器的运行模式p_tmr : 指向定时器的指针,宏 OS_TMR 是一个结构体。p_name: 定时器名称 。dly: 初始化定时器的延迟值 。period: 重复周期。opt: 定时器运行选项 ,这里有两个模式可以选择。     OS_OPT_TMR_ONE_SHOT 单次定时器     OS_OPT_TMR_PERIODIC 周期定时器p_callback: 指向回调函数的名字。p_callback_arg: 回调函数的参。p_err: 调用此函数以后返回的错误码。单次定时器使用OST没人Create()函数创建定时器吧参数opt设置为OS_OPT_TMR_ONE_SHOT,就是创建的单次定时器。创建一个单次定时器以后,我们以当调用OST没人Start()函数定时器就会冲创建时定义的dly开始倒计数,直到减为0调用回调函数![单次定时器](http://img.blog.csdn.net/20160805142104462)下图展示了单次定时器在调用OSTmrStart()函数后开始倒计数,将dly减为0后调用回调函数的过程,到这里定时器就停止运行,不再做任何事情了,我们可以调用OSTmrStop()函数来删除这个运行完成的定时器。其实我们也可以重新调用OSTmrStart()函数来开启一个已经运行完成的定时器,通过调用OSTmrStart()函数来重新触发单次定时器周期定时器(无初始化延迟)在创建定时器的时候也可以创建带有初始化延时的,初始化延时就是OSTmrCreate()函数中的参数dly 就是初始化延迟,定时器的第一个周期就是dly。当第一个周期完成后就是用参数period 作为周期值,调用OSTmrStart()函数开启有初始化延时的定时器。![周期定时器](http://img.blog.csdn.net/20160805142855269)
0 0
原创粉丝点击