FreeRTOSAPI函数详解----队列

本文主要介绍FreeRTOS函数的使用(动态方法),基本上加了static函数就是使用静态方法由于静态方法使用得比较少因此不做介绍

队列

传递任务与任务之间的,任务与中断之间不固定长度的消息

消息队列创建函数

xQueueCreate();

xQueueCreate( uxQueueLength uxItemSize, pucQueueStorage pxQueueBuffer )

参数

uxQueueLength --- >队列中能够存储最大消息单元数目,即队列长度

uxItemSize --- >队列中消息单元的大小,以字节为单位

返回值:

成功:返回队列句柄

失败:返回NULL,也许是创建队列需要的RAM无法分配成功

消息队列创建函数

void vQueueDelete()

参数

队列的句柄

无返回值

消息队列发送函数

xQueueSend()
xQeueSendToBack()
作用

向队列句尾发送消息

参数

xQueue--->队列句柄

pvItemToQueue--->指针指向发送到队列尾部的队列消息

xTicksToWait--->队列满时等待队列空闲的最大超时时间

xTicksToWait---->0---->不等待,如果队列满并且此值为零函数将直接返回

xTicksToWait---->0到portMAX_DELAY之间的值,如果指定时间为portMAX_DELAY任务将会挂起

返回值

成功:pdTRUE

失败:errQUEUE_FULL

xQueueSendToFront()

作用向句首发送消息,参考上面的函数

向消息队列发送消息函数(原型函数)

xQueueGenericSend()
参数

QueueHandle_t xQueue--->队列句柄

const void * const pvItemToQueue--->指向要发送的数据的指针

TickType_t xTicksToWait--->等待时间

const BaseType_t xCopyPosition--->发送位置

返回值

成功:pdTRUE

失败:errQUEUE_FULL

消息队列读取消息函数

xQueueReceive
xQueuePeek

接受完成后将把接受的消息从队列中删除

参数

xQueue--->队列句柄

pvBuffer--->指向接受到要保存的数据

xTicksToWait---->队列空时的等待时间

0至portMAX_DELAY之间的值

返回值

成功:pdTRUE

失败:pdFALSE

消息队列注意事项

posted @ 2024-04-24 22:07  Jiang-Tang  阅读(71)  评论(0)    收藏  举报  来源