队列的创建
队列的创建有两种方法:动态分配内存、静态分配内存,
动态分配内存:xQueueCreate,队列的内存在函数内部动态分配
动态创建:
静态创建:
静态创建的示例代码:
对队列进行操作的相关函数
复位
删除
写队列
写到尾部
这两个函数是等同的,都是从在任务里写,第三个是在中断里写
写到头部
写队列的参数说明
读队列
使用 xQueueReceive() 函数读队列,读到一个数据后,队列中该数据会被移除。这个函数有两个版本:在任务中使用、在ISR中使用。函数原型如下:
参数说明
查询
可以查询队列中有多少个数据、有多少空余空间。函数原型如下:
覆盖
当队列长度为1时,可以使用 xQueueOverwrite() xQueueOverwriteFromISR() 来覆盖数据。注意,队列长度必须为1。当队列满时,这些函数会覆盖里面的数据,这也以为着这些函数不会被阻塞。
偷看
如果想让队列中的数据供多方读取,也就是说读取时不要移除数据,要留给后来人。那么可以使用"窥视",也就是 xQueuePeek() 或 xQueuePeekFromISR() 。这些函数会从队列中复制出数据,但是不移除数据。这也意味着,如果队列中没有数据,那么"偷看"时会导致阻塞;一旦队列中有数据,以后每次"偷看"都会成功。