UCOSIII 3 任務的創刪掛解

2021-08-21 05:52:10 字數 1272 閱讀 1114

1.1

、任務的建立:

ucosiii

中要想使用任務,第一件事就是建立乙個任務,建立任務使用函式

ostaskcreate()

。void  ostaskcreate (  os_tcb          *p_tcb,

cpu_char        *p_name,

os_task_ptr   p_task,

void            *p_arg,

os_prio          prio,

cpu_stk         *p_stk_base,

cpu_stk_size   stk_limit,

cpu_stk_size   stk_size,

os_msg_qty     q_size,

os_tick          time_quanta,

void            *p_ext,

os_opt           opt,

os_err          *p_err)

1.2、任務的刪除:

如果我們不想使用某個任務了就可將其刪除,刪除任務使用函式ostaskdel(),函式原型如下:

void  ostaskdel (os_tcb  *p_tcb,

os_err  *p_err)

入口引數的解釋如下:

*p_tcb : 指向要刪除的任務 tcb,

也可以傳遞乙個 null 指標來刪除呼叫 ostaskdel()函式的任務自身

。*p_err: 指向乙個變數用來儲存呼叫 ostaskdel()函式後返回的

錯誤碼。

1、刪除某個任務以後,它占用的os_tcb和堆疊就可以再次利用來建立其他的任務。

2、儘管ucosiii允許在系統執行中刪除任務,但是應該盡量避免這種操作,如果這個任務可能占有與其他任務共享的資源,在刪除此任務之前這個被占有的資源沒有被釋放就有可能導致奇怪的結果。

2.1、ucosiii任務掛起:

當我們想暫停某個任務,但是又不想刪除掉這個任務的時候就可以使用函式ostasksuspend()來將這個任務掛起,函式原型如下:

void   ostasksuspend ( os_tcb  *p_tcb,

os_err  *p_err)

2.2、任務恢復

當我們想要恢復某個被掛起的任務的時候可以呼叫函式ostaskresume(),函式原型如下:

void  ostaskresume (os_tcb  *p_tcb,

os_err  *p_err)

UCOSIII(3) 實現任務切換的多種方式

在執行中實現任務切換的函式有兩個 1 任務級任務切換 2 中斷級任務切換 任務級任務切換 osctxsw ldr r0,nvic int ctrl 把 nvic int ctrl暫存器值載入到r0 trigger the pendsv exception causes context switch ...

3 任務的前後臺排程管理

任務 登入系統獲取shell之後,在單一終端介面下啟動的程序 前台 在終端介面上,可以在提示符上使用者操作的環境 後台 不顯示在終端介面的環境 1 前台啟動 使用者輸入命令,直接執行程式 root localhost ping 127.0.0.1 2 後台啟動 在命令行尾加入 符號 root loc...

FreeRTOS學習筆記3 任務的幾種狀態及轉換

如果將所有任務都設定在相同的優先順序,那麼在系統跑起來之後,所有任務將進行輪盤式的排程。如果任務僅僅具有不同的優先順序而沒有經過其他處理時。高優先順序的任務將一直重複執行,將低優先順序的任務 餓死 starved 事件驅動 為了使我們的任務切實有用,我們需要通過某種方式來進行事件驅動。乙個事件驅動任...