物联网消息队列函数应用:
一,功能需求:
1,使用消息队列检测串口输入
2,通过串口发送字符串openled6,openled7,openled8,openled9,分别打开led6,led7,led8,led9
3,通过串口发送字符串closeled6,closeled7,closeled8,closeled9,分别关闭板载led6,led7,led8,led9.
二,函数接口:
QueueHandled_t xQueueCreate(UBaseType_t uxQueueLength,UBaseType_t uxltemSize);
功能概述:创建一个消息队列,并返回消息队列句柄
参数:(1)队列一次可容纳消息的最大长度。
(2)队列中每一个消息体大小
返回值:NULL—创建失败
Any other value:创建成功,返回消息队列句柄
注意事项:队列可以用于任务与任务之间的通信,也可以用于中断于任务之间的通信,可在调度器开启之间,创建消息队列。
BaseType_t xQueueSend/xQueueSendFront(QueueHandle_t xQueue,const void *pvltemToQueue,TickType_t TicksToWait);
功能概述:在任务中往队列中传入消息
xQueueSend入到对尾
xQueueSendFront入到对头
参数:(1)消息队列句柄
(2)要发送的消息地址
(3)阻塞等待时间
返回值:pdPASS:发送成功
errQUEUE_FULL:队列已经满了,发送失败。
BaseType_t xQueueSendFromISR/xQueueSendToFrontFromISR(QueueHandle_t xQueue,const void *pvltemToQueue,NULL)
功能概述:在中断中消息队列中传入消息。
xQueueSendToFrontFromISR入到对头
参数:(1)消息队列句柄
(2)要发送的消息地址
(3)NULL
返回值:pdTRUE:发送成功
errQUEUE_FULL: 队列已经满,发送失败
注意事项:调用此函数,会触发上下文切换(当前被中断的任务)
优先级低于解除阻塞的任务
在启动调度器之前不能调用此函数
BaseType_t xQueueReceive(QueueHandle_t xQueue,void *pvBuffer,
TickType_t xTicksToWait );
功能概述:在任务中读取消息队列消息
参数:(1)消息队列句柄
(2)接收消息的缓冲区
(3)阻塞等待时间
返回值:pdPASS :创建失败
errQUEUE_EMPTY:消息队列为空
BaseType_t xQueueReceiveFromISR(QueueHandle_t xQueue,void *pvBuffer,NULL);
功能概述:在中断中读取消息队列消息
参数:(1)消息队列句柄
(2)接收消息的缓冲区
(3)NULL
返回值:pdPASS :创建失败
pdFAIL:消息队列为空
注意事项:调用此函数,会触发上下文切换(当前被中断任务优先级低于解除阻塞的任务)
在启动调度器之前不能调用此函数。