第三章 队列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); /