複製鏈接
請複製以下鏈接發送給好友

OSTaskSuspend

鎖定
OSTaskSuspend() :無條件掛起一個任務(任務優先級)。
中文名
無條件掛起一個任務
外文名
OSTaskSuspend
別    名
任務優先級
功    能
無條件掛起一個任務

OSTaskSuspend功能描述

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

OSTaskSuspend函數原型及參數

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:要掛起的任務不存在。