慎用OSTaskDel(OS_PRIO_SELF);OSTaskSuspend(OS_PRIO_SELF); OSTaskDel(OS_PRIO_SELF);这个函数,把该任务使用到的变量都给删除了! 比如,在Wake_Modem();中使用到了 char txmsg; ... txmsg ='7'; OSQPost(QSem, (void *)&txmsg); 而在另一个任务中等待...
OSTaskDel(OS_PRIO_SELF); } } } 所以这样看来,OSTaskDelReq (INT8U prio)函数有两个功能。第一,告诉某一任务删除他自己;第二,查看是否有其他任务请求删除当前任务。 如果某一任务想要请求删除自己,可以直接释放资源,然后调用OSTaskDel (OS_PRIO_SEL)。©...
if (prio >= OS_LOWEST_PRIO && prio != OS_PRIO_SELF) { //非法的优先级 return (OS_PRIO_INVALID); } #endif OS_ENTER_CRITICAL(); if (prio == OS_PRIO_SELF) { prio = OSTCBCur->OSTCBPrio; //获得当前任务的优先级的值 } //就绪表删除任务 if ((ptcb = OSTCBPrioTbl[prio]) != (O...
任务B会通过OSTaskDelReq (INT8U prio)函数来查询是否有其他任务请求删除自己。若有,则释放自己占用的资源、内存,调用OSTaskDel (OS_PRIO_SEL)来删除自己。主要的过程如下: void Task(void *p_arg) { . . while (1) { OSTimeDly(1); if (OSTaskDelReq(OS_PRIO_SELF) == OS_ERR_TASK_DEL_REQ) { Relea...
OSTaskDel(OS_PRIO_SELF); } } } 所以这样看来,OSTaskDelReq (INT8U prio)函数有两个功能。第一,告诉某一任务删除他自己;第二,查看是否有其他任务请求删除当前任务。 如果某一任务想要请求删除自己,可以直接释放资源,然后调用OSTaskDel (OS_PRIO_SEL)。©...