#include <Arduino_FreeRTOS.h>
#include "semphr.h"
SemaphoreHandle_t mutex;
TaskHandle_t TaskHandle;
void setup() {
Serial.begin(9600);
mutex = xSemaphoreCreateMutex();
xTaskCreate(task1, "print task", 128, NULL, 1, &TaskHandle);
xTaskCreate(task2, "print task", 128, NULL, 3, NULL);
}
void loop() {
//this code is empty
}
void task1(void *pvParameters){
while(1){
if(xSemaphoreTake(mutex, 10) == pdTRUE){
Serial.println("Task 1 will take resource");
}
}
}
void task2(void *pvParameters){
int x = 0;
while(1){
x = uxTaskPriorityGet(TaskHandle);
Serial.print("Task 1 Priority = ");
Serial.println(x);
Serial.println("Go to sleep for 3 seconds");
vTaskDelay(3000/portTICK_PERIOD_MS);
if(xSemaphoreTake(mutex, 10) == pdTRUE){
Serial.println("Hello from Task 2");
xSemaphoreGive(mutex);
taskYIELD();
}
x = uxTaskPriorityGet(TaskHandle);
Serial.print("Task 1 Priority = ");
Serial.println(x);
vTaskDelete(TaskHandle);
vTaskDelete(NULL);
}
}