队列正如大家所知为FIFO,一个队列具有队列头与队列尾。FreeRTOS队列元素通过复制这个值到队列中实现。支持多个任务对同一个队列的发送、接收操作,但通常我们在实现业务代码时,使用队列是多个任务向队列发送数据,而一个任务接收队列中的数据,执行业务逻辑。
队列支持读写阻塞,阻塞时间可以由用户自由选择。当多个任务同时要向队列写元素时,如果队列只有一个位置,那么只有最高优先级的任务可以向队列写入。当多个任务同时要从队列读元素时,如果队列只有一个元素,那么只有最高优先级的任务可以从队列读出。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
队列在使用之前必须先创建,我们通过xQueueCreate()创建一个队列,若创建失败,将会返回NULL。我们在使用队列时,调用创建队列时返回的QueueHandle_t类型的句柄。
#define xQueueCreate(uxQueueLength, uxItemSize)