xQueueCreate
[队列管理]
queue. h
QueueHandle_t xQueueCreate( UBaseType_t uxQueueLength,
UBaseType_t uxItemSize );
创建一个新队列并返回
可引用此队列的句柄。
configSUPPORT_DYNAMIC_ALLOCATION
必须在 FreeRTOSConfig.h 中被设置为 1,或保留未定义状态(此时,它默认
为 1) ,才能使用此 RTOS API 函数。
每个队列需要 RAM 用于保存队列状态和
包含在队列(队列存储区域)中的项目。
如果使用 xQueueCreate() 创建队列,则所需的 RAM 将自动
从 FreeRTOS 堆中分配。
如果使用 xQueueCreateStatic() 创建队列,
则 RAM 由应用程序编写者提供,这会产生更多的参数,
但这样能够在编译时静态分配 RAM
。 请参阅静态分配与
动态分配页面了解详情。
-
参数:
-
uxQueueLength
|
队列可同时容纳的最大项目数
。
|
uxItemSize
|
存储队列中的每个数据项所需的大小(以字节为单位)。
数据项按副本排队,而不是按引用排队,
因此该值为每个排队项目将被复制的字节数。队列中每个数据项
必须大小相同。
|
-
返回:
-
如果队列创建成功,则返回所创建队列的句柄
。 如果创建队列所需的内存无法
分配 ,则返回 NULL。
用法示例:
struct AMessage
{
char ucMessageID;
char ucData[ 20 ];
};
void vATask( void *pvParameters )
{
QueueHandle_t xQueue1, xQueue2;
/* Create a queue capable of containing 10 unsigned long values. */
xQueue1 = xQueueCreate( 10, sizeof( unsigned long ) );
if( xQueue1 == NULL )
{
/* Queue was not created and must not be used. */
}
/* Create a queue capable of containing 10 pointers to AMessage
structures. These are to be queued by pointers as they are
relatively large structures. */
xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );
if( xQueue2 == NULL )
{
/* Queue was not created and must not be used. */
}
/* ... Rest of task code. */
}
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.