任務的建立 掛起和恢復

2021-08-11 06:25:37 字數 1255 閱讀 1266

ucosii有兩個建立任務的函式:ostaskcreate()和ostaskcreateext().其中ostaskcreateext()是ostaskcreate()的擴充套件。並提供了一些附加功能。

int8u   ostaskcreate(

void (*task)(void *pd),//指向任務的指標

void *pdata,//傳遞給任務的引數

os_stk *ptos,//指向任務堆疊棧頂的指標

int8u prio//任務的優先順序

)

一般來說,任務可在呼叫函式osstart()啟動任務調動之前來建立,也可以在任務中來建立。但ucos有乙個規定,在呼叫啟動任務函式osstart()之前先建立乙個任務,並賦予它最高的任務優先順序,從而使他成為起始任務,然後在起始任務中再建立其他任務。

如果要使用系統提供的統計任務,則統計任務初始化函式也必須在這個起始任務中來呼叫。

掛起任務函式ostasksuspend(int8u prio);

函式的引數prio為待掛起任務的優先級別。如果呼叫函式ostasksuspend()的任務要掛起自身,則引數必須為常數os_prio_self(該常數在檔案ucos_ii.h中被定義為0xff)。

當呼叫成功時,返回資訊os_no_err;否則根據出錯的具體情況返回os_task_suspend_idle、osprio_invalid和os_task_suspend_prio等。

任務可以通過呼叫函式ostaskchangeprio()來改變任務的優先順序。

函式ostaskchangeprio()的原型如下:

int8u ostaskchangeprio(

int8u oldprio;

int8u newprio;

);若呼叫函式ostaskchangeprio()成功,則函式返回os_no_err。

任務的刪除:

ostaskdel()的原型如下:

#if os_task_del_en

int8u ostaskdel(

int8u prio//要刪除任務的優先順序

);

如果乙個任務呼叫函式是為了刪除自己,則應在呼叫函式時另函式的引數prio為os_prio_self。

請求刪除任務函式:

ostaskdelreq()

函式的引數應該為被刪除任務的優先級別prio,被刪除任務呼叫這個函式時,函式引數應該為os_prio_self。

UCOSIII任務掛起和恢復

1.1 任務的掛起 我們想暫停某個任務,但是又不想刪除掉這個任務的時候就可以使用函式ostasksuspend 來將這個任務掛起,函式原型如下 void ostasksuspend os tcb p tcb,os err p err 1.2 任務的恢復 當我們想要恢復某個被掛起的任務的時候可以呼叫函...

任務的建立與刪除,掛起與恢復

通過乙個小例子來了解ucos任務的建立刪除,掛起和恢復。建立三個任務,開始任務用於建立另外兩個任務,任務1led01s閃爍一次,並在串列埠輸出 任務1已經執行的次數 任務二在任務執行5的倍數次時執行1次。先是任務的建立,主要是定義任務優先順序,任務堆疊大小,任務控制塊,任務堆疊以及任務函式,注意不同...

FfDL任務掛起halt和恢復resume功能實現

ffdl官方目前 任務掛起僅僅實現將資料庫裡面的status欄位修改為halted,沒有實現真正意義上的pod銷毀 任務狀態資訊保留,resume介面更是沒有實現。由於專案需要,需要實現這部分功能。思路 採用restapi patchmodel進行服用,當訊息是halt的時候標記掛起操作,resum...