消息队列
消息队列用于在任务之间传递数据,避免共享内存访问的冲突。
c
复制代码
QueueHandle_t xQueue = NULL;
// 任务1:发送数据到队列
void Task1(void *pvParameters)
{
int32_t data = 100;
while(1)
{
xQueueSend(xQueue, &data, portMAX_DELAY);
vTaskDelay(pdMS_TO_TICKS(1000));
}
}
// 任务2:接收数据并处理
void Task2(void *pvParameters)
{
int32_t receivedData;
while(1)
{
if (xQueueReceive(xQueue, &receivedData, portMAX_DELAY) == pdTRUE)
{
// 处理接收到的数据
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
}
vTaskDelay(pdMS_TO_TICKS(500));
}
}
int main(void)
{
HAL_Init();
SystemClock_Config();
// 创建消息队列
xQueue = xQueueCreate(10, sizeof(int32_t));
// 创建任务
xTaskCreate(Task1, "Task1", 128, NULL, 1, NULL);
xTaskCreate(Task2, "Task2", 128, NULL, 2, NULL);
// 启动调度器
vTaskStartScheduler();
while(1);
}
|