ucosII需要提供定时中断,以实现禅师和延时控制功能。这个定时中断叫做时钟节拍。时钟节拍的频率越高,系统的负荷越重。
OSTimeTick()用于通知ucosII发生了时钟节拍中断。
OSTimeDly()
OSTimeDlyHMSM()
OSTimeDlyResume()
OSTimeGet()
OSTimeSet()
这些函数可以再OS_TIME.c文件中找到。必须通过OS_CFG.h中的一些常量,才能使一些时间管理函数呗允许使用。
1 OSTimeDly()
将任务延时一段特定时间的功能函数。时间长短有指定的时钟节拍的数目决定。调用该函数会使系统进行一次任务调度,从而去执行下一个优先级最高的任务就绪。调用延时函数后一旦规定的时间期满或有其他的任务通过调用OSTimeDlyResume()取消了延时,他就会立即进入就绪状态。
时钟节拍数 1--65536.指定0值不进行任何延时。
//1.OSTimeDly()函数
void OSTimeDly(INT16U ticks)
{
#if OS_CRITICAL_METHOD == 3
#endif
//调用OSTimeDly()的进程自己把自己从就绪控制矩阵中拿下来,
//即:去掉调度器(x,y)矩形阵列(OSRdyTbl,OSRdyGrp)中该task对应的bit位,使得调度器不考虑
//该task的调度
//延时ticks值,放入OSTCBDly单元,在os时钟滴答处理函数OSTimeTick()中,会处理该单元[gliethttp]
//因为本task正在运行,所以本task现在的优先级最高,现在本task已经将自己从就绪控制矩阵中--调度器(x,y)矩形阵列
//把自己摘掉,所以调度函数OS_Sched()一定会切换到另一个task中执行新task的代码[gliethttp]
}
想延时一个时钟节拍,而实际上只在0--1个节拍之间结束延时。所以如果程序想延时至少一个节拍,必须指定延时2个节拍。
2 OSTimeDlyHMSM()按时分秒延时函数
3恢复延时的任务 OSTimeDlyResume()
4