关于ucos中os_tmr.c中的代码分析
我本身也是个初学者,喜欢
嵌入式而自学
ucos系统,u
cos是个开源的代码,短小而又简单,这是我学习的笔记,希望能对喜欢ucos的人有一点帮助,因本人也是初学者,如有错误迎指点。一般的书多是2.5版本,没有
os_tmr.c,所以我写了关于这部分代码的分析。
我读ucos.中的os_tmr.c:
我想这个文件里就是为了写一个建立在操作系统的定时器,原来我们学的时钟节拍就像cpu
总线时钟脉冲一样。我们建立的是定时器结构体,在os_tmr.c中有一个函数OSTmr_Task()这个函数对定时器结构体的信息进行处理,在定时时间到了时候,该定时器中的一个指向回调函数的指针就调用这个回调节器函数进行工作,当然,你要写回调函数,不然就什么也不做,以前做过ucos移植的人知道要写一个硬件
定时器中断函数,这回要加个OSTmrSignal()这里有个发送信号。我们学硬件时知道,用到硬件定时器时要给它一个计算脉冲。这个软件定时器也要一个计算脉冲。我们建立的定时器结构体都会挂到OSTmrWheelTbl[OS_TMR_CFG_WHEEL_SIZE]上面,OS_TMR_CFG_WHEEL+SIZE是要自己定义的,至于挂到OSTmrWheelTbl[0] 到OSTmrWheelTbl[OS_TMR_CFG_WHEEL_SIZE-1]哪一个上,只要看一下OSTmr_Link (OS_TMR *ptmr, INT8U type)就明白了,而且一个OSTmrWheelTbl[n]上可以挂很多个定时器结构体。
一、定时器的建立:
定时器是在我们的应用程序中建立的,
OS_TMR*OSTmrCreate (INT32U
dly,
INT32U
period,
INT8U
opt,
OS_TMR_CALLBACK
callback,
void
*callback_arg,
INT8U
*pname,
INT8U
*perr)
想使用定时器那些函数要在os_cfg.h中定义 OS_TMR_EN。
返回值是os_tmr结构体(定义在ucos_ii.h中)。
typedefstruct
os_tmr {
INT8U
OSTmrType;
OS_TMR_CALLBACKOSTmrCallback;
我读ucos.中的os_tmr.c:
一、定时器的建立:
OS_TMR
想使用定时器那些函数要在os_cfg.h中定义 OS_TMR_EN。
返回值是os_tmr结构体(定义在ucos_ii.h中)。
typedef
INT8U
OS_TMR_CALLBACK