05_FreeRTOS队列

FreeRTOS队列

1、简介

FreeRTOS发送到队列的消息是通过拷贝实现的,这意味着队列存储的数据时原数据,而不是原数据的引用。

2、FreeRTOS队列基本用法

1)、定义一个队列句柄变量,保存创建的队列,如: QueueHandle_t Message_Queue;

2)、使用API函数xQueueCreate创建一个队列。

3)、如果希望使用先进先出队列,使用API函数xQueueSend()或xQueueSendToBack()向队列投递队列项。如果希望使用后进先出队列,使用API函数xQueueSendToFront()向队列投递队列项。如果在中断服务程序中,使用它们的带中断保护版本。

4)、使用API函数xQueueReceive()从队列读取队列项,如果在中断服务程序中,使用它们的带中断保护版本。

3、队列创建函数

3.1、函数描述

xQueueCreate( uxQueueLength, uxItemSize )

创建新队列。为新队列分配指定的存储空间并返回队列句柄。

3.2、参数描述

uxQueueLength—队列项数目。

uxItemSize—每个队列项大小,单位是字节。

3.2、返回值

成功创建队列返回队列句柄,否自返回0。

4、向队列投递队列项

4.1、函数描述

xQueueSend( xQueue, pvItemToQueue, xTicksToWait )

这是一个宏,这个宏向队列尾部投递一个队列项,项目以拷贝的形式入队,而不是引用形式入队。

4.2、参数描述

xQueue—队列句柄。

pvItemToQueue—指针,指向要入队的项目。要保存到队列中的项目字节数在队列创建时已由参数uxItemSize确定。

xTicksToWait—如果队列满,任务等待队列空闲的最大时间。

4.3、返回值

队列项入队成功返回pdTRUE,否则返回errQUEUE_FULL。

5、读取并移除队列项

5.1、函数描述

xQueueReceive( xQueue, pvBuffer, xTicksToWait )

从队列中读取一个队列项并把该队列项从队列中删除。读取队列项是以拷贝的形式完成,而不是以引用的形式,因此必须提供足够大的缓冲区以便容纳队列项。参数pvBuffer指向这个缓冲
区。

5.2、参数描述

xQueue—队列句柄。

pvBuffer—指向一个缓冲区,用于拷贝接收到的列表项。

xTicksToWait—要接收的项目队列为空时,允许任务最大阻塞时间。

5.3、返回值

成功接收到列表项返回pdTRUE,否则返回pdFALSE。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值