C OS II 示例 ucos任務的掛起與刪除

2021-09-10 07:04:17 字數 3515 閱讀 7344

(1)設計乙個只有乙個任務mytask的應用程式。

(2)在(1)的任務mytask中再建立乙個任務yourtask。

要求當任務yourtask執行20次後,掛起任務mytask;當任務yourtask執行40次後,恢復任務mytask。

要求任務mytask和任務yourtask執行一段時間後,使任務mytask能刪除任務yourtask。

建立乙個新任務。任務的建立可以在多工環境啟動之前,也可以在正在執行的任務中建立。中斷處理程式中不能建立任務。乙個任務可以為無限迴圈的結構。

函式原int8u ostaskcreate(void (*task)(void *pd), void *pdata, os_stk *ptos, int8u prio);引數說明:task是指向任務**首位址的指標。

pdata指向乙個資料結構,該結構用來在建立任務時向任務傳遞引數。

返回值:

ostaskcreate()的返回值為下述之一:

os_no_err:函式呼叫成功。

os_prio_exist:具有該優先順序的任務已經存在。

os_prio_invalid:引數指定的優先順序大於os_lowest_prio。

os_no_more_tcb:系統中沒有os_tcb可以分配給任務了。

無條件掛起乙個任務。呼叫此函式的任務也可以傳遞引數os_prio_self,掛起呼叫任務本身。當前任務掛起後,只有其他任務才能喚醒被掛起的任務。任務掛起後,系統會重新進行任務排程,執行下乙個優先順序最高的就緒任務。喚醒掛起任務需要呼叫函式ostaskresume()。

任務的掛起是可以疊加到其他操作上的。例如,任務被掛起時正在進行延時操作,那麼任務的喚醒就需要兩個條件:延時的結束以及其他任務的喚醒操作。又如,任務被掛起時正在等待訊號量,當任務從訊號量的等待對列中清除後也不能立即執行,而必須等到被喚醒後。

函式原:int8uostasksuspend( 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:要掛起的任務不存在。

喚醒乙個用ostasksuspend()函式掛起的任務。ostaskresume()也是唯一能「解掛」掛起任務的函式。

函式原int8uostaskresume ( int8u prio);

引數說明:prio指定要喚醒任務的優先順序。

返回值:

ostaskresume ()的返回值為下述之一:

os_no_err:函式呼叫成功。

os_task_resume_prio:要喚醒的任務不存在。

os_task_not_suspended:要喚醒的任務不在掛起狀態。

os_prio_invalid:引數指定的優先順序大於或等於os_lowest_prio。

請求刪除任務。

函式原:nt8uostaskdelreq( int8u prio);

引數說明:prio指定要刪除任務的優先順序。

返回值:

ostaskdelreq()的返回值為下述之一:

os_no_err:刪除任務請求已經註冊。

os_task_not_exist:任務已經被刪除。

os_task_del_idle:不能刪除空閒任務。

os_prio_invalid:無效優先順序。

os_task_del_req:請求刪除任務。

刪除乙個任務。

函式原:nt8uostaskdel( int8u prio);

引數說明:prio指定要刪除任務的優先順序。

返回值:

ostaskdel()的返回值為下述之一:

os_no_err:刪除任務成功。

os_task_del_idle:不能刪除空閒任務。

os_prio_invalid:無效優先順序。

os_task_del_err:請求刪除任務不存在。

os_task_del_isr:在isr中不允許刪除任務。

C OS ii的任務與通訊

c os ii使用訊號量 事件標誌組 郵箱和訊息佇列這些中間環節來顯現任務之間的通訊,這些中間環節統一被稱為事件。table 1.函式ossemcreat 函式名ossemcreat 函式原形 os event ossemcreat intu16 cnt 功能描述 建立訊號量 輸入引數 cnt 訊號...

ucos的任務排程

在多工系統中,都會提供乙個系統函式來進行程序 任務 間切換,綜合來說,他們有兩種程序 任務 切換方式 1 由程序 任務 本身直接呼叫任務切換函式進行程序 任務 切換 在當前程序 任務 因為不能獲得必須的資源而立即被堵塞時,就由程序 任務 本生直接呼叫程序 任務 切換函式進行程序 任務 間排程。在li...

ucos 任務的掛起與恢復

看看任務掛起的函式 if os task suspend en 0 int8u ostasksuspend int8u prio if prio os lowest prio endif os enter critical if prio os prio self else if prio ostc...