FreeRTOS文档简易翻译-消息队列

本文档介绍了FreeRTOS中关于消息队列的API,包括创建、管理、发送和接收消息的各种函数,如vQueueAddToRegistry、xQueueCreate、xQueueSend等,详细解析了每个函数的作用和使用场景,对于理解FreeRTOS中队列操作具有指导意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第三章 队列API

3.1 vQueueAddToRegistry()

函数原型:void vQueueAddToRegistry( QueueHandle_t xQueue, char *pcQueueName);

总结:给队列分配一个字符串名称,并将该队列加入到队列注册表中

注意:队列注册表是给内核调试器用的,使用一个字符串名称作为调试接口,提供了一种办法给调试器去定位队列和信号量的数据结构。configQUEUE_REGISTRY_SIZE 应该被设置

3.2 xQueueAddToSet()

函数原型:BasetType_t xQueueAddToSet(QueueSetMemberHadnle_t xQueueOrSemaphore,

​ QueueSetHandle_t xQueueSet);

总结:把一个队列或者信号量加入到队列集合中

3.3 xQueueCreate()

函数原型:QueueHandle_t xQueueCreate( UBaseType_t uxQueueLength,

​ UBaseType_t uxItemSize);

总结:创建一个队列。该API创建的队列所使用的RAM是由内核动态分配的,所费空间的最大值由队列所占空间的大小所决定(单个项目大小*最大项目数),可以使用static的静态创建方法创建静态队列,其内存空间需要用户自己分配。

参数:uxQueueLength 该队列所能容纳的最大项目数

​ usItemSize 单个项目所占的大小,byte为单位

返回值:如果因为内核堆空间不够创建失败返回NULL,否则返回队列的句柄

注意:队列可以用来在任务间或者任务与中断间传递数据,队列可以在内核启动前就创建,需要将configSUPPORT_DYNAMIC_ALLOCATION设为1

typedef struct A_message
{
   
	char ucMessageID;
	char ucData[20];
}AMessage;

#define QUEUE_LENGTH	5  //队列最大项目数
#define QUEUE_ITEM_SIZE  sizeof(AMessage);  /
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值