uc/os的时间管理(1)
时间:2010-06-02 来源:linux_qt
uc/os的时间管理(1)
uc/os中时间管理的函数有以下几个:
1任务延时函数,OSTimeDly()
2按时分秒延时函数OSTimeDlyHMSM();
3 让处于延时期的任务结束延时,OSTimeDlyResume();
4系统时间OSTimeGet()和OSTimeSet()
一.任务延时函数OSTimeDly()
uc/os要求用户提供定时中断来实现延迟和超时控制等功能。时钟节拍的频率越高,系统的负荷就越重。
uc/os II提供了这样一个系统服务,申请该服务的任务需要延迟一段时间,这段时间的长短是由时钟节拍的数目来决的,这个函数叫OSTimeDly().当系统调用一次OSTimeDly()时系统进行一次任务调度,既等待队列中优先级最高的任务
投入运行。注意当延迟结束时,将就绪态中优先级最高的任务的状态置为运行态。
void OSTimeDly(INT16U ticks)
{
if(ticks>0){
OS_ENTER_CRITICAL();
if((OSRdyTbl[OSTCBCur->OSTCBY]&=~OSTCBCur->OSTCBCur->OSTCBBitX)==0){
OSRdyGrp&=~OSTCBCur->OSTCBBitY;
}
OSTCBCur->OSTCBDly=ticks;
OS_EXIT_CRITICAL();
OSSched();
}
}
其中ticks的取值范围是1到65535,在负荷很重的系统中,任务甚至有可能会在时钟中断即将发生时调用OSTimeDly(1),在这种情况下任务几乎没有得到任何延迟,因为任务马上又被重新调度了,如果用户的应用程序至少得延时一个节拍,必须要调用OSTimeDly(2),指定延时两个节拍。
uc/os中时间管理的函数有以下几个:
1任务延时函数,OSTimeDly()
2按时分秒延时函数OSTimeDlyHMSM();
3 让处于延时期的任务结束延时,OSTimeDlyResume();
4系统时间OSTimeGet()和OSTimeSet()
一.任务延时函数OSTimeDly()
uc/os要求用户提供定时中断来实现延迟和超时控制等功能。时钟节拍的频率越高,系统的负荷就越重。
uc/os II提供了这样一个系统服务,申请该服务的任务需要延迟一段时间,这段时间的长短是由时钟节拍的数目来决的,这个函数叫OSTimeDly().当系统调用一次OSTimeDly()时系统进行一次任务调度,既等待队列中优先级最高的任务
投入运行。注意当延迟结束时,将就绪态中优先级最高的任务的状态置为运行态。
void OSTimeDly(INT16U ticks)
{
if(ticks>0){
OS_ENTER_CRITICAL();
if((OSRdyTbl[OSTCBCur->OSTCBY]&=~OSTCBCur->OSTCBCur->OSTCBBitX)==0){
OSRdyGrp&=~OSTCBCur->OSTCBBitY;
}
OSTCBCur->OSTCBDly=ticks;
OS_EXIT_CRITICAL();
OSSched();
}
}
其中ticks的取值范围是1到65535,在负荷很重的系统中,任务甚至有可能会在时钟中断即将发生时调用OSTimeDly(1),在这种情况下任务几乎没有得到任何延迟,因为任务马上又被重新调度了,如果用户的应用程序至少得延时一个节拍,必须要调用OSTimeDly(2),指定延时两个节拍。
相关阅读 更多 +