FreeRTOS之消息队列
2026/7/23 1:09:23 网站建设 项目流程

先看下消息队列文章

13-FreeRTOS之消息队列详解

重点就是队列写入时,将数据发送(写入)到队列的尾部,队列读取时,从队列的头部接收(读取)数据。

剩下的就是阻塞机制:

  • 当任务读空队列时: 任务可以选择阻塞等待,直到有数据到来或超时。这会让出 CPU 给其他就绪任务,提高效率。

  • 当任务写满队列时: 任务可以选择阻塞等待,直到队列有空间空出或超时,并由优先级最高任务先写,如果优先级一样,则由等待时间最长任务写入。

  • 这种阻塞机制是 FreeRTOS 实现任务同步的关键。

下面重点分析下队列结构体与队列结构示意图关系。

队列结构体

typedefstructQueueDefinition { int8_t * pcHead;                       /* 存储区域的起始地址 */ int8_t * pcWriteTo;                    /* 下一个写入的位置 */ union     {         QueuePointers_t     xQueue;         SemaphoreData_t  xSemaphore;      } u ;     List_t xTasksWaitingToSend;             /* 等待发送列表 */     List_t xTasksWaitingToReceive;          /* 等待接收列表 */ volatile UBaseType_t uxMessagesWaiting; /* 非空闲队列项目的数量 */     UBaseType_t uxLength;                  /* 队列长度 */     UBaseType_t uxItemSize;                 /* 队列项目的大小 */ volatil

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询