3、队列(queue)
2022-11-30 10:50:29 3 举报
AI智能生成
学习
作者其他创作
大纲/内容
1、FIFO(First In First Out)先进先出
a.引用 (把数据、把变量的地址复制进队列里)
b. 拷贝 (把数据、把变量的值复制进队列里)
2、传输数据的两种方法
3、阻塞访问
特性
QueueHandle_t font color=\"#64b5f6\
参数: uxQueueLength --> 队列长度,最多能存放多少个数据(item) uxItemSize --> 每个数据(item)的大小:以字节为单位
动态分配内存
QueueHandle_t xQueueCreateStatic( UBaseType_t font color=\"#7b1fa2\
参数 pucQueueStorageBuffer uxItemSize非0 pucQueueStorageBuffer必须指向一个uint8_t数组 pxQueueBuffer 必须执行一个StaticQueue_t结构体,用来保存队列的数据结构
静态分配内存
1、创建
复位 BaseType_t xQueueReset( QueueHandle_t pxQueue); //队列恢复为初始状态
删除 void vQueueDelete( QueueHandle_t xQueue );
BaseType_t font color=\"#64b5f6\
任务中使用
ISR中使用
xQueue 队列句柄,要写哪个队列
pvItemToQueue 数据指针,这个数据的值会被复制进队列,
xTicksToWait 如果队列满则无法写入新数据,可以让任务进入阻塞状态, 0 无法写入数据时函数会立刻返回 portMAX_DELAY,则会一直阻塞直到有空间可写
返回值 pdPASS:数据成功写入了队列 errQUEUE_FULL:写入失败,因为队列满了。
参数
写队列
pvBuffer bufer指针,队列的数据会被复制到这个buffer
读队列
UBaseType_t uxQueueMessagesWaiting( const QueueHandle_t xQueue ); //返回队列中可用数据的个数
UBaseType_t uxQueueSpacesAvailable( const QueueHandle_t xQueue ); //返回队列中可用空间的个数
查询
参数 pvItemToQueue 数据地址 返回值 pdTRUE --> 成功 pdFALSE --> 失败
覆盖队列
参数 pvItemToQueue: // 数据地址 xTicksToWait //没有数据的话阻塞一会 portMAX_DELAY,则会一直阻塞直到有空间可写 返回值 pdTRUE --> 成功 pdFALSE --> 失败
偷看队列 读取时不移除数据
覆盖/偷看
函数
邮箱
队列(queue)
0 条评论
回复 删除
下一页