FreeRTOS的Queue

FreeRTOS的Queue

队列功能

FreeRTOS的所有的通信和同步机制都通过队列来实现。
队列可以保存有限长度的数据单元,通常情况下,作为FIFO使用。

队列阻塞

队列可以多任务访问。

1.读取阻塞

队列为空的阻塞,等到队列内有数据或者超过了阻塞时间,任务会切换到ready状态。

2.写入阻塞

队列为满的阻塞,

3.哪个任务优先解除阻塞的任务?

优先级最高,或者同优先级的等待时间最长的任务

4.大型数据队列

如果队列中数据单元的大小很大,建议使用指针来访问。

队列API

函数 功能 描述
xQueueCreate 创建队列 创建指定大小的队列,并返回队列句柄
xQueueSendToFront 发送到队首 这是一个宏定义,由xQueueGenericSend实现
xQueueSendToBack 发送到队尾 这是一个宏定义,由xQueueGenericSend实现
xQueueCRReceive 读取 从队列接收数据,并将其从队列中删除
xQueuePeek 接收 从队列接收数据,但是不删除接收的单元
uxQueueMessagesWaiting 查询个数 查询有效数据单元个数(有中断安全版本 ISR)

猜你喜欢

转载自blog.csdn.net/zhangshuaiisme/article/details/84249510