在FreeRTOS中,队列是实现任务间通信的核心机制。xQueueCreate 和 xQueueCreateStatic 分别用于动态和静态创建队列,以下是它们的详细用法和区别:
1. 动态创建队列:xQueueCreate()
函数原型
QueueHandle_t xQueueCreate( UBaseType_t uxQueueLength, UBaseType_t uxItemSize );
参数说明
uxQueueLength:队列可容纳的最大项目数量。uxItemSize:每个项目的大小(以字节为单位)。
返回值
- 成功时返回队列句柄(
QueueHandle_t)。 - 失败时返回
NULL(通常因内存不足)。
内存分配
- FreeRTOS 自动分配内存,包括队列控制块(管理结构体)和存储数据的缓冲区。
- 依赖FreeRTOS的内存管理(如
pvPortMalloc),需确保启用了动态内存分配(如heap_1至heap_5)。
示例代码
// 创建队列:10个int元素的队列
QueueHandle_t xQueue = xQueueCreate(10

最低0.47元/天 解锁文章
4282

被折叠的 条评论
为什么被折叠?



