This is how you create and use a mutex in FreeRTOS:
Includes:
#include <freertos/semphr.h>
Global declaration
SemaphoreHandle_t myMutex;
Initialization code
Call this once, before using it:
myMutex = xSemaphoreCreateMutex();
How to lock & unlock the mutex
// Wait a maximum of 10ms to lock the mutex if(xSemaphoreTake(myMutex, 10 / portTICK_PERIOD_MS) == pdTRUE) { // Success locking the mutex // TODO: Your code goes here! // Unlock the mutex! xSemaphoreGive(myMutex); } else { // Failed to lock the mutex within timeout // DO NOT use the resource protected by the mutex // DO NOT unlock (xSemaphoreGive) ! }