队列创建xQueueCreate,此宏最终调用函数xQueueGenericCreate()
QueueHandle_t xQueueCreate( UBaseType_t uxQueueLength,//要创建的队列的队列长度,这里是队列的项目数
UBaseType_t uxItemSize )//队列中每个项目(消息)的长度,单位为字节
向队列发送消息xQueueSend xQueueSendToBack xQueueSendToFront
这三个函数最后调用的是同一个函数xQueueGenericSend()
BaseType_t xQueueSend(QueueHandle_t xQueue, //队列句柄
const void* pvItemToQueue,//指向要发送的消息
TickType_t xTicksToWait); //阻塞时间.值为0队列满时立即返回
//值为portMAX_DELAY 死等,但是宏 //INCLUDE_VTaskSuspend必须为1
//在FreeRTOSConfig.h文件130行
返回值:
pdPASS:向队列发送消息成功
errQUEUE_FULL 队列已满了,消息发送失败
从队列读取消息xQueueReceive(),读取成功后会把队列中的这条数据删除
BaseType_t xQueueReceive(QueueHandle_t xQueue //队列句柄
void* pvBuffer //保存数据的缓冲区
TickType_t xTicksToWait); //阻塞时间
返回值:
pcTRUE: 从队列中读取数据成功
pdFALSE: 从队列中读取数据失败
从队列读取消息xQueuePeek(),读取成功后不会将消息删除参数和xQueueReceive相同