任務(wù)狀態(tài)
FreeRTOS 中的任務(wù)永遠處于下面幾個狀態(tài)中的某一個:
● 運行態(tài)
當一個任務(wù)正在運行時,那么就說這個任務(wù)處于運行態(tài),處于運行態(tài)的任務(wù)就是當前正在使用處理器的任務(wù)。如果使用的是單核處理器的話那么不管在任何時刻永遠都只有一個任務(wù)處于運行態(tài)。
● 就緒態(tài)
處于就緒態(tài)的任務(wù)是那些已經(jīng)準備就緒(這些任務(wù)沒有被阻塞或者掛起),可以運行的任務(wù),但是處于就緒態(tài)的任務(wù)還沒有運行,因為有一個同優(yōu)先級或者更高優(yōu)先級的任務(wù)正在運行!
● 阻塞態(tài)
如果一個任務(wù)當前正在等待某個外部事件的話就說它處于阻塞態(tài),比如說如果某個任務(wù)調(diào)用了函數(shù)
vTaskDelay()的話就會進入阻塞態(tài),直到延時周期完成。任務(wù)在等待隊列、信號量、事件組、通知或互斥信號量的時候也會進入阻塞態(tài)。任務(wù)進入阻塞態(tài)會有一個超時時間,當超過這個超時時間任務(wù)就會退出阻塞態(tài),即使所等待的事件還沒有來臨!
● 掛起態(tài)
像阻塞態(tài)一樣,任務(wù)進入掛起態(tài)以后也不能被調(diào)度器調(diào)用進入運行態(tài),但是進入掛起態(tài)的任務(wù)沒有超時時間。任務(wù)進入和退出掛起態(tài)通過調(diào)用函數(shù)vTaskSuspend()和 xTaskResume()。任務(wù)狀態(tài)之間的轉(zhuǎn)換如圖所示:
4、任務(wù)優(yōu)先級
每 個 任 務(wù) 都 可 以 分 配 一 個 從 0~(configMAX_PRIORITIES-1) 的 優(yōu) 先 級
,configMAX_PRIORITIES 在文件 FreeRTOSConfig.h 中有定義,一般不超過 32。
優(yōu)先級數(shù)字越低表示任務(wù)的優(yōu)先級越低,0 的優(yōu)先級最低,configMAX_PRIORITIES-1 的優(yōu)先級最高??臻e任務(wù)的優(yōu)先級最低,為0。(注意和中斷的優(yōu)先級區(qū)分,任務(wù)和中斷不一樣,中斷一般是數(shù)字越小優(yōu)先級越大)
當宏 configUSE_TIME_SLICING 定義為 1 的時候多個任務(wù)可以共用一個優(yōu)先級,數(shù)量不限。
-
嵌入式
+關(guān)注
關(guān)注
5138文章
19521瀏覽量
314603 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4367瀏覽量
64123 -
FreeRTOS
+關(guān)注
關(guān)注
12文章
487瀏覽量
63714 -
任務(wù)
+關(guān)注
關(guān)注
1文章
20瀏覽量
8626
發(fā)布評論請先 登錄
FreeRTOS中的任務(wù)管理
轉(zhuǎn):第13章 FreeRTOS任務(wù)優(yōu)先級修改及其分配方案
如何保證任務(wù)優(yōu)先級的高低?
任務(wù)優(yōu)先級問題
ucosii中兩個任務(wù)等待信號量,由于任務(wù)優(yōu)先級引起的死機怎么解決
freeRTOS任務(wù)優(yōu)先級設(shè)置問題如何解決
FreeRTOS任務(wù)調(diào)度優(yōu)先級,會直接在就緒列表中調(diào)用低優(yōu)先級任務(wù)么?
軟件定時器的優(yōu)先級與任務(wù)的優(yōu)先級是同一個東西嗎?
FREERTOS中任務(wù)優(yōu)先級的設(shè)置
freeRTOS學習任務(wù)狀態(tài)運行
FreeRTOS中斷優(yōu)先級和任務(wù)優(yōu)先級架構(gòu)的相關(guān)資料推薦
2.FreeRTOS中斷優(yōu)先級和任務(wù)優(yōu)先級

評論