金牌会员
 
- 积分
- 1057
- 金钱
- 1057
- 注册时间
- 2015-5-12
- 在线时间
- 208 小时
|
发表于 2015-7-15 16:21:20
|
显示全部楼层
任务调用OSTimeDlyHMSM时会把当前任务状态设为 OSTCBCurPtr->TaskState = OS_TASK_STATE_DLY;同时会把当前任务挂在tick任务等待表中OS_TickListInsert(OSTCBCurPtr,ticks,opt_time,p_err);每个tick中断到来最后会导致OS_TickListUpdate被调用,在这个函数里面会判断延时时间是否到达
case OS_TASK_STATE_DLY:
p_tcb->TickRemain = p_tcb->TickCtrMatch /* Compute time remaining of current TCB */
- OSTickCtr;
if (OSTickCtr == p_tcb->TickCtrMatch) { /*  rocess each TCB that expires */
p_tcb->TaskState = OS_TASK_STATE_RDY;
OS_TaskRdy(p_tcb); /* Make task ready to run */
} else {
done = DEF_TRUE; /* Don't find a match, we're done! */
}
break;
如果到达就会把该任务状态设为OS_TASK_STATE_RDY。 |
|