/** 添加同步与互斥信号量的定义 **/
时间: 2023-12-18 17:29:22 浏览: 62
以下是添加同步与互斥信号量的定义的示例代码:
```c
#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"
SemaphoreHandle_t xSemaphore; // 定义一个互斥信号量
void vTask1(void *pvParameters)
{
while(1)
{
if(xSemaphoreTake(xSemaphore, (TickType_t)10) == pdTRUE) // 获取互斥信号量
{
// 执行临界区代码
xSemaphoreGive(xSemaphore); // 释放互斥信号量
}
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
void vTask2(void *pvParameters)
{
while(1)
{
if(xSemaphoreTake(xSemaphore, (TickType_t)10) == pdTRUE) // 获取互斥信号量
{
// 执行临界区代码
xSemaphoreGive(xSemaphore); // 释放互斥信号量
}
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
void vTask3(void *pvParameters)
{
while(1)
{
if(xSemaphoreTake(xSemaphore, (TickType_t)10) == pdTRUE) // 获取互斥信号量
{
// 执行临界区代码
xSemaphoreGive(xSemaphore); // 释放互斥信号量
}
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
int main(void)
{
xSemaphore = xSemaphoreCreateMutex(); // 创建互斥信号量
xTaskCreate(vTask1, "Task 1", 1000, NULL, 1, NULL);
xTaskCreate(vTask2, "Task 2", 1000, NULL, 1, NULL);
xTaskCreate(vTask3, "Task 3", 1000, NULL, 1, NULL);
vTaskStartScheduler();
while(1);
}
```