#include <Arduino_FreeRTOS.h>
// Định nghĩa chân LED
#define LED_PIN 10
// Định nghĩa handle cho task
TaskHandle_t BlinkTaskHandle;
// Task để bật/tắt LED
void BlinkTask(void *pvParameters) {
(void) pvParameters;
// Thiết lập chân LED là OUTPUT
pinMode(LED_PIN, OUTPUT);
while (1) {
digitalWrite(LED_PIN, HIGH); // Bật LED
vTaskDelay(1000 / portTICK_PERIOD_MS); // Chờ 1 giây
digitalWrite(LED_PIN, LOW); // Tắt LED
vTaskDelay(1000 / portTICK_PERIOD_MS); // Chờ 1 giây
}
}
void setup() {
// Khởi tạo Serial Monitor
Serial.begin(9600);
Serial.println("FreeRTOS Blink LED Task Started");
// Tạo task BlinkTask với mức ưu tiên tskIDLE_PRIORITY + 1
xTaskCreate(
BlinkTask, // Hàm nhiệm vụ
"BlinkTask", // Tên nhiệm vụ (để debug)
128, // Kích thước ngăn xếp (stack)
NULL, // Tham số nhiệm vụ
tskIDLE_PRIORITY + 1, // Độ ưu tiên của nhiệm vụ
&BlinkTaskHandle // Handle nhiệm vụ
);
// Bắt đầu scheduler của FreeRTOS
vTaskStartScheduler();
}
void loop() {
// Không cần làm gì trong hàm loop
}