当前位置: 代码迷 >> 综合 >> ucos-iii学习之软件定时器管理
  详细解决方案

ucos-iii学习之软件定时器管理

热度:124   发布时间:2023-09-19 06:36:10.0

定时器递减其计数值,当计数值为0时,就是定时期满的时候。此时通过回调函数执行相应的操作。回调函数是用户定义的,当定时期满时可以被调用。
定时器的分辨率决定于时基频率。

定时器API总结
ucos-iii学习之软件定时器管理

1.定时器可以设置为3种模式:一次性定时模式,无初始周期模式,有初始周期模式。
(1)一次性定时模式
定时器会递减被设置初始的定时值,当该值为 0 时就会调用回调函数并停止定时器。
(2)无初始定时周期模式
当定时期满时,回调函数被调用,定时值被定时周期值满载,如此周期性的反复。
(3)有初始定时周期模式
第一周期的递减值由 OSTmrCreate()中的参数”dly”设置,以后的重载值由”period”值确定。调用 OSTmrStart()重新开始。
2.内部定时器管理-定时器状态
OSTmrStateGet()获得定时器的状态。
OSTmrRemainGet()获得剩余定时时间。
3.定时器内部管理-OS_TMR
OS_TmrTask()是一个周期性的任务,它使用时基中断源作为它的时钟计数源。
(1)回调函数是在定时器任务被切换后执行的。这意味着定时器任务需要有足够的堆栈空间供回调函数去执行。
(2)回调函数是在根据定时器队列中依次存放的。所以期满后回调函数是依次被执行的。
(3)定时器任务的执行时间决定于:有多少个定时器期满,执行定时器中的回调函数需多少时间。因为回调函数是用户提供,它可能很大 程度上影响了定时器任务的执行时间。
(4)定时器中的回调函数不能等待事件的发生,因为这样可能会让定时器任务被挂起。
(5)回调函数被执行时会锁调度器,所以你必须让回调函数尽可能地短。
4.内部定时器管理-定时器列表
定时期列表类似于时基列表。