#include <Arduino_FreeRTOS.h>
#include <queue.h>
//
#define LED1_PIN 9
#define LED2_PIN 10
#define LED3_PIN 11
#define ANALOG_PIN A2 // Pin Analog A2
// 定义闪烁频率(毫秒)
const TickType_t LED1_FREQUENCY = 500 / portTICK_PERIOD_MS; // 500ms
const TickType_t LED2_FREQUENCY = 1000 / portTICK_PERIOD_MS; // 1000ms
const TickType_t LED3_FREQUENCY = 1500 / portTICK_PERIOD_MS; // 1500ms
// 任务函数的声明
void TaskBlinkLED1(void *pvParameters);
void TaskBlinkLED2(void *pvParameters);
void TaskBlinkLED3(void *pvParameters);
void setup() {
// Serial Monitor
Serial.begin(9600);
// LED_PIN MODE = OUTPUT
pinMode(LED1_PIN, OUTPUT);
pinMode(LED2_PIN, OUTPUT);
pinMode(LED3_PIN, OUTPUT);
// Task 1: LED Blink
xTaskCreate(
TaskBlinkLED1,
"LED1 Blink",
64,
NULL,
1,
NULL);
xTaskCreate(
TaskBlinkLED2,
"LED2 Blink",
64,
NULL,
1,
NULL);
xTaskCreate(
TaskBlinkLED3,
"LED3 Blink",
64,
NULL,
1,
NULL);
}
void loop() {
//
}
// 任务1 - LED1闪烁
void TaskBlinkLED1(void *pvParameters) {
TickType_t xLastWakeTime = xTaskGetTickCount();
for (;;) {
digitalWrite(LED1_PIN, HIGH);
Serial.println("LED1 ON");
vTaskDelayUntil(&xLastWakeTime, LED1_FREQUENCY / 2);
digitalWrite(LED1_PIN, LOW);
Serial.println("LED1 OFF");
vTaskDelayUntil(&xLastWakeTime, LED1_FREQUENCY / 2);
}
}
// 任务2 - LED2闪烁
void TaskBlinkLED2(void *pvParameters) {
TickType_t xLastWakeTime = xTaskGetTickCount();
for (;;) {
digitalWrite(LED2_PIN, HIGH);
Serial.println("LED2 ON");
vTaskDelayUntil(&xLastWakeTime, LED2_FREQUENCY / 2);
digitalWrite(LED2_PIN, LOW);
Serial.println("LED2 OFF");
vTaskDelayUntil(&xLastWakeTime, LED2_FREQUENCY / 2);
}
}
// 任务3 - LED3闪烁
void TaskBlinkLED3(void *pvParameters) {
TickType_t xLastWakeTime = xTaskGetTickCount();
for (;;) {
digitalWrite(LED3_PIN, HIGH);
Serial.println("LED3 ON");
vTaskDelayUntil(&xLastWakeTime, LED3_FREQUENCY / 2);
digitalWrite(LED3_PIN, LOW);
Serial.println("LED3 OFF");
vTaskDelayUntil(&xLastWakeTime, LED3_FREQUENCY / 2);
}
}