#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#define LED_RED GPIO_NUM_5
#define LED_GREEN GPIO_NUM_2
#define LED_BLUE GPIO_NUM_4
#define LED_ORANGE GPIO_NUM_18
void setup() {
Serial.begin(115200);
Serial.println(F("In Setup function"));
pinMode(LED_RED, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
pinMode(LED_BLUE, OUTPUT);
pinMode(LED_ORANGE, OUTPUT);
//Create three tasks with labels Task1, Task2 and Task3 and assign the priority as 1, 2 and 3 respectively.
//We also create the fourth task labeled as IdelTask when there is no task in
//operation and it has the highest priority.
xTaskCreate(MyTask1, "Task1", 1000, NULL, 1, NULL);
xTaskCreate(MyTask2, "Task2", 1000, NULL, 2, NULL);
xTaskCreate(MyTask3, "Task3", 1000, NULL, 3, NULL);
xTaskCreate(MyIdleTask, "IdleTask", 1000, NULL, 0, NULL);
}
void loop() {
}
static void MyTask1(void* pvParameters)
{
while(1)
{
digitalWrite(LED_RED,HIGH);
digitalWrite(LED_GREEN,LOW);
digitalWrite(LED_BLUE,LOW);
digitalWrite(LED_ORANGE,LOW);
Serial.println(F("Task1"));
vTaskDelay(100/portTICK_PERIOD_MS);
}
}
static void MyTask2(void* pvParameters)
{
while(1)
{
digitalWrite(LED_RED,LOW);
digitalWrite(LED_GREEN,HIGH);
digitalWrite(LED_BLUE,LOW);
digitalWrite(LED_ORANGE,LOW);
Serial.println(F("Task2"));
vTaskDelay(120/portTICK_PERIOD_MS);
}
}
static void MyTask3(void* pvParameters)
{
while(1)
{
digitalWrite(LED_RED,LOW);
digitalWrite(LED_GREEN,LOW);
digitalWrite(LED_BLUE,HIGH);
digitalWrite(LED_ORANGE,LOW);
Serial.println(F("Task3"));
vTaskDelay(140/portTICK_PERIOD_MS);
}
}
static void MyIdleTask(void* pvParameters)
{
while(1)
{
digitalWrite(LED_RED,LOW);
digitalWrite(LED_GREEN,LOW);
digitalWrite(LED_BLUE,LOW);
digitalWrite(LED_ORANGE,HIGH);
Serial.println(F("Idle state"));
delay(50);
}
}