共享资源的互斥
在多个任务中访问共享资源(如SD卡或LCD显示)时,必须使用互斥锁(Mutex)来避免资源竞争。
使用互斥锁保护共享资源
c
SemaphoreHandle_t xMutex;
void sdTask(void *pvParameters) {
for (;;) {
if (xSemaphoreTake(xMutex, portMAX_DELAY) == pdTRUE) {
// Perform SD card write operations
xSemaphoreGive(xMutex);
}
vTaskDelay(100);
}
}
void lcdTask(void *pvParameters) {
for (;;) {
if (xSemaphoreTake(xMutex, portMAX_DELAY) == pdTRUE) {
// Perform LCD display operations
xSemaphoreGive(xMutex);
}
vTaskDelay(100);
}
}
在系统初始化时创建互斥锁:
c
void vApplicationIdleHook(void) {
xMutex = xSemaphoreCreateMutex();
}
|