UCOSiii软件定时器
Posted dongry
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UCOSiii软件定时器相关的知识,希望对你有一定的参考价值。
1 简介
2 软件定时器的工作模式
定时器有两种工作模式:OS_OPT_TMR_ONE_SHOT单次定时器模式和OS_OPT_TMR_PERIODIC周期定时器模式。
2.1 单次定时器模式(OS_OPT_TMR_ONE_SHOT)
使用OSTmrCreate()函数创建定时器时把参数opt设置为OS_OPT_TMR_ONE_SHOT,就是创建的单次定时器。创建一个单次定时器以后,我们一旦调用OSTmrStart()函数定时器就会从创建时定义的dly开始倒计数,直到减为0调用回调函数并停止。单次定时器的定时器只执行一次。
由图可知:单次定时器在调用OSTmrStart()函数后开始倒计数,将dly减为0后调用回调函数的过程,到这里定时器就停止运行,不再做任何事情了,我们可以调用OSTmrDel()函数来删除这个运行完成的定时器。其实我们也可以重新调用OSTmrStart()函数来开启一个已经运行完成的定时器,通过调用OSTmrStart()函数来重新触发单次定时器,如下图所示;
2.2 周期定时器模式
2.2.1 无初始化延时
使用OSTmrCreate()函数创建定时器时把参数opt设置为OS_OPT_TMR_PERIODIC,就是创建的周期定时器。当定时器倒计数完成后,定时器就会调用回调函数,并且重置计数器开始下一轮的定时,就这样一直循环下去.如果使用OSTmrCreate()函数创建定时器的时候,参数dly为0的话,那么定时器在每个周期开始时计数器的初值就为period。
2.2.2 有初始化延时
在创建定时器的时候也可以创建带有初始化延时的,初始化延时就是OSTmrCreate()函数中的参数dly就是初始化延迟,定时器的第一个周期就是dly。当第一个周期完成后就是用参数period作为周期值,调用OSTmrStart()函数开启有初始化延时的定时器
以上是关于UCOSiii软件定时器的主要内容,如果未能解决你的问题,请参考以下文章