OSTaskSuspend

OSTaskSuspend

OSTaskSuspend,函數,無條件掛起一個任務。調用此函數的任務也可以傳遞參數 OS_PRIO_SELF,掛起調用任務本身。當前任務掛起后,只有其他任務才能喚醒被掛起的任務。任務掛起后,系統會重新進行任務調度,運行下一個優先順序最高的就緒任務。

功能描述


OSTaskSuspend() :無條件掛起一個任務(任務優先順序)
無條件掛起一個任務。調用此函數的任務也可以傳遞參數 OS_PRIO_SELF,掛起調用任務本身。當前任務掛起后,只有其他任務才能喚醒被掛起的任務。任務掛起后,系統會重新進行任務調度,運行下一個優先順序最高的就緒任務。喚醒掛起任務需要調用函數OSTaskResume()。
任務的掛起是可以疊加到其他操作上的。例如,任務被掛起時正在進行延時操作,那麼任務的喚醒就需要兩個條件:延時的結束以及其他任務的喚醒操作。又如,任務被掛起時正在等待信號量,當任務從信號量的等待對列中清除后也不能立即運行,而必須等到被喚醒后。

函數原型及參數


INT8U OSTaskSuspend(INT8U prio);
參數說明:prio為指定要獲取掛起的任務優先順序,也可以指定參數 OS_PRIO_SELF,掛起任務本身。此時,下一個優先順序最高的就緒任務將運行。
返回值:
OSTaskSuspend() 的返回值為下述之一:
* OS_NO_ERR:函數調用成功。
* OS_TASK_SUSPEND_IDLE:試圖掛起μC/OS-II中的空閑任務(Idle task)。此為非法操作。
* OS_PRIO_INVALID:參數指定的優先順序大於 OS_LOWEST_PRIO 或沒有設定 OS_PRIO_SELF 的值。
* OS_TASK_SUSPEND_PRIO:要掛起的任務不存在。