FreeRTOS學習筆記(一) -基礎知識與了解



     FreeRTOS為一個輕量可裝載於MCU上的作業系統,與裸機最大差別在於可在MCU上執行多任務(TASK),任務特性:
  • 支持搶占
  • 可設定任務優先級
  • 每個任務都有自己的記憶體空間(有時候不好去估算需要的大小,目前我都是先估算一個大小後再開始調整,以不浪費空間為主)
  • 使用簡單
一,任務狀態
--FreeRTOS狀態只會出現下圖中狀態之一

  1. Running:
    任務運行中,在單核心的MCU中永遠只會有一個任務在運行。
  2. Ready:
    任務處於準備中(沒有被掛起也無進入阻塞),因為目前有優先級更高的任務在執行。
  3. Block(阻塞):
    若任務處於此狀態,通常都是因為調用vTaskDelay()進入阻塞狀態,超過阻塞時間則進入Ready狀態。
  4. Suspend(掛起):
    任務進入此狀態都是調用了vTaskSuspend(),進入此狀態的任務將不再被調度器調用至運行狀態,直到調用vTaskResume()恢復。



二,任務函式
-通常任務多為一個永久迴圈,

void vTaskFunction( void * pvParameters )
 {
for( ;; )
{
               /*
                   自己的任務運行程式
                      */

vTaskDelay( xDelay );/*也可用其他API進行延時,後面補充*/
}

          vTaskDelete(NULL); /*要退出且刪除任務,一定要調用vTaskDelete()*/
 }

  • 任務函數沒有返回值
  • pvParameters :傳遞資料
  • 若跳出迴圈,一定要使用vTaskDelete()刪除任務










留言

這個網誌中的熱門文章

FreeRTOS學習筆記 (二)-任務創建和刪除(xTaskCreate及vTaskDelete)

FreeRTOS學習筆記 (三)-時間管理vTaskDelay()及vTaskDelayUntil()

MCU的硬體基礎知識(2) 電晶體的應用