【rtos】-队列

在 FreeRTOS 中,消息队列(Queue)和信号量(Semaphore)是实现任务间通信与同步的核心机制。对于多个发送者与接收者的对应关系、应用场景及封装方法,以下是详细解答:
一、多发送者与接收者的对应机制

  1. 基于队列的广播模式
    多个发送者可向同一个队列发送数据,而接收者通过队列接收所有消息,无需关心具体发送者。这实现了一对多或多对多通信。
    c
    运行
    // 创建一个队列供多个任务使用
    QueueHandle_t xQueue = xQueueCreate(10, sizeof(Message_t));

// 发送者任务A(温度传感器)
void vTaskSensorA(void *pvParameters) {
Message_t msg = {.type = TEMP_SENSOR, .value = 25.5};
xQueueSend(xQueue, &msg, portMAX_DELAY);
}

// 发送者任务B(湿度传感器)
void vTaskSensorB(void *pvParameters) {
Message_t msg = {.type = HUMIDITY_SENSOR, .value = 60.2};
xQueueSend(xQueue, &msg, portMAX_DELAY);
}

// 接收者任务(数据处理)
void vTaskProcessor(void pvParameters) {
Message_t receivedMsg;
while (1) {
if (xQueu

你可能感兴趣的:(开发语言,mcu)