#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
static int shared_counter = 0; // Shared variable
void task_increment(void *pvParameters) {
for (int i = 0; i < 100; i++) {
shared_counter++; // Read, modify, write operation
printf("[IncrementTask] shared_counter: %d\n", shared_counter);
vTaskDelay(pdMS_TO_TICKS(10)); // Delay to simulate work
}
vTaskDelete(NULL);
}
void task_decrement(void *pvParameters) {
for (int i = 0; i < 100; i++) {
shared_counter--; // Read, modify, write operation
printf("[DecrementTask] shared_counter: %d\n", shared_counter);
vTaskDelay(pdMS_TO_TICKS(10)); // Delay to simulate work
}
vTaskDelete(NULL);
}
void app_main() {
xTaskCreate(&task_increment, "IncrementTask", 2048, NULL, 5, NULL);
xTaskCreate(&task_decrement, "DecrementTask", 2048, NULL, 5, NULL);
// Give tasks time to complete
vTaskDelay(pdMS_TO_TICKS(3000));
printf("[Main] Final shared_counter value: %d\n", shared_counter);
}