#include "FreeRTOS.h"
#include "task.h"
void GreenTask(void *pvParameters) {
while (1) {
digitalWrite(9, HIGH);
vTaskDelay(500 / portTICK_PERIOD_MS);
digitalWrite(9, LOW);
vTaskDelay(500 / portTICK_PERIOD_MS);
}
}
void BlueTask(void *pvParameters) {
while (1) {
digitalWrite(8, HIGH);
vTaskDelay(1000 / portTICK_PERIOD_MS);
digitalWrite(8, LOW);
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
void RedTask(void *pvParameters) {
while (1) {
digitalWrite(10, HIGH);
vTaskDelay(1500 / portTICK_PERIOD_MS);
digitalWrite(10, LOW);
vTaskDelay(1500 / portTICK_PERIOD_MS);
}
}
void setup() {
Serial.begin(115200);
Serial.println("Starting FreeRTOS...");
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
BaseType_t result;
result = xTaskCreate(
GreenTask, "GreenTask",
configMINIMAL_STACK_SIZE, NULL,
tskIDLE_PRIORITY + 2, NULL);
if (result != pdPASS) {
Serial.println("Failed to create GreenTask!");
while (1);
}
result = xTaskCreate(
BlueTask, "BlueTask",
configMINIMAL_STACK_SIZE, NULL,
tskIDLE_PRIORITY + 1, NULL);
if (result != pdPASS) {
Serial.println("Failed to create BlueTask!");
while (1);
}
result = xTaskCreate(
RedTask, "RedTask",
configMINIMAL_STACK_SIZE, NULL,
tskIDLE_PRIORITY + 1, NULL);
if (result != pdPASS) {
Serial.println("Failed to create RedTask!");
while (1);
}
vTaskStartScheduler();
}
void loop() {
}