/** 添加同步与互斥信号量的定义 **/
时间: 2023-12-18 21:29:22 浏览: 49
以下是添加同步与互斥信号量的定义的示例代码:
```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);
}
```
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)