Mode:
Duration:
1
Coding works best on desktop or with an external keyboard.
Coding works best on desktop or with an external keyboard.
Demonstrates mutual exclusion using FreeRTOS mutex.
#include <FreeRTOS.h>
#include <task.h>
#include <semphr.h>
#include <stdio.h>
SemaphoreHandle_t xMutex;
void vTask1(void* pvParameters) {
xSemaphoreTake(xMutex, portMAX_DELAY);
printf("Task1 in critical section\n");
xSemaphoreGive(xMutex);
vTaskDelete(NULL);
}
void vTask2(void* pvParameters) {
xSemaphoreTake(xMutex, portMAX_DELAY);
printf("Task2 in critical section\n");
xSemaphoreGive(xMutex);
vTaskDelete(NULL);
}
int main() {
xMutex = xSemaphoreCreateMutex();
xTaskCreate(vTask1, "T1", configMINIMAL_STACK_SIZE, NULL, 1, NULL);
xTaskCreate(vTask2, "T2", configMINIMAL_STACK_SIZE, NULL, 1, NULL);
vTaskStartScheduler();
return 0;
}FreeRTOS is a lightweight, open-source real-time operating system (RTOS) kernel for embedded devices. It provides multitasking, scheduling, and inter-task communication for microcontrollers and small processors.
Origin & Creator
Created by Richard Barry in 2003, now maintained and extended by Amazon Web Services as Amazon FreeRTOS and FreeRTOS Kernel.
Industrial Note
Essential in embedded systems requiring predictable real-time behavior, small footprint, and multitasking support-commonly used in IoT sensors, motor control, and safety-related microcontroller applications.