//TP3 souhir oualha
#include <STM32FreeRTOS.h>
SemaphoreHandle_t xMutex;
void Task1(void *argument) {
for (;;) {
Serial.println("Task 1");
// Prendre le mutex pour accéder à la ressource partagée (la LED)
xSemaphoreTake(xMutex, portMAX_DELAY);
// Allumer la LED_VERT
digitalWrite(D7, HIGH);
vTaskDelay(1000);
// Donner le mutex pour libérer la ressource partagée
xSemaphoreGive(xMutex);
vTaskDelay(1);
}
}
void Task2(void *argument) {
for (;;) {
// Prendre le mutex pour accéder à la ressource partagée
xSemaphoreTake(xMutex, portMAX_DELAY);
// Éteindre la LED_VERT
Serial.println("Task 2");
digitalWrite(D7, LOW);
vTaskDelay(1000);
// Donner le mutex pour libérer la ressource partagée
xSemaphoreGive(xMutex);
vTaskDelay(1);
}
}
void setup() {
Serial.begin(9600);
pinMode(D7, OUTPUT);
// Création des tâches
xTaskCreate(Task1, "TurnOnLED", 128, NULL, 1, NULL);
xTaskCreate(Task2, "TurnOffLED", 128, NULL, 2, NULL);
// Création du mutex
xMutex = xSemaphoreCreateMutex();
vTaskStartScheduler();
}
void loop() {
}