1. 簡介
本實驗透過 FreeRTOS 建立 LEDTask_App 與 ButtonTask_App,並使用任務間通訊(Inter-Task Communication, ITC)機制來實現 LED 狀態的切換。透過本實驗,學習 FreeRTOS 任務建立、佇列傳遞(queue communication)、排程機制以及按鍵 debounce handling。
:::info
任務(task)是在 FreeRTOS 中執行的基本單位,每個 task 都是由一個 C 函數所組成,意思是你需要先定義一個 C 的函數,然後再用 xTaskCreate() 這個 API 來建立一個 task。
這個 C 函數有幾個特點,它的返回值必須是 void,其中通常會有一個無限迴圈,所有關於這個 task 的工作都會在迴圈中進行,而且這個函數不會有 return。
FreeRTOS 不允許 task 自行結束(使用 return 或執行到函數的最後一行)。
Task 被建立出來後,它會配置有自己的堆疊空間和 stack variable(就是 function 中定義的變數)。
void ATaskFunction(void *pvParameters){