FreeRTOS學習筆記(一) -基礎知識與了解
FreeRTOS為一個輕量可裝載於MCU上的作業系統,與裸機最大差別在於可在MCU上執行多任務(TASK),任務特性:
- 支持搶占
- 可設定任務優先級
- 每個任務都有自己的記憶體空間(有時候不好去估算需要的大小,目前我都是先估算一個大小後再開始調整,以不浪費空間為主)
- 使用簡單
一,任務狀態
--FreeRTOS狀態只會出現下圖中狀態之一
- Running:
任務運行中,在單核心的MCU中永遠只會有一個任務在運行。 - Ready:
任務處於準備中(沒有被掛起也無進入阻塞),因為目前有優先級更高的任務在執行。 - Block(阻塞):
若任務處於此狀態,通常都是因為調用vTaskDelay()進入阻塞狀態,超過阻塞時間則進入Ready狀態。 - Suspend(掛起):
任務進入此狀態都是調用了vTaskSuspend(),進入此狀態的任務將不再被調度器調用至運行狀態,直到調用vTaskResume()恢復。
二,任務函式
-通常任務多為一個永久迴圈,
void vTaskFunction( void * pvParameters )
{
for( ;; )
{
/*
自己的任務運行程式
*/
vTaskDelay( xDelay );/*也可用其他API進行延時,後面補充*/
}
vTaskDelete(NULL); /*要退出且刪除任務,一定要調用vTaskDelete()*/
}
- 任務函數沒有返回值
- pvParameters :傳遞資料
- 若跳出迴圈,一定要使用vTaskDelete()刪除任務
留言
張貼留言