php图书管理系统网站开发wordpress多主题插件下载地址
一.消息队列的概念及应用
消息队列(queue):可以在任务与任务间、中断和任务间传递消息,实现任务接收来自其他任务或中断的不固定的消息

1.1任务需求
1、使用消息队列检测串口输入
2、通过串口发送字符串openled1,openled2,openled3,分别打开板载led1,led2,led3
3、通过串口发送字符串closeled1,closeled2,closeled3,分别关闭板载led1,led2,led3
1.2API
函数原型  | #include “FreeRTOS.h” #include “queue.h” QueueHandle_t xQueueCreate( ①UBaseType_t uxQueueLength, ②UBaseType_t uxItemSize );  | 
功能概述  | 创建一个消息队列,并返回消息队列句柄  | 
参数  | ①:队列一次可容纳消息的最大长度 ②:队列中每个消息体大小  | 
返回值  | NULL:创建失败 Any other value :创建成功,返回消息队列句柄  | 
注意事项  | 队列可以用于任务与任务通信,也是用于中断与任务通信 可在调度器开启之前,创建消息队列  | 
函数原型  | #include “FreeRTOS.h” #include “queue.h” BaseType_t xQueueSend/xQueueSendToFront/xQueueSendToBack( ① QueueHandle_t xQueue, ②const void * pvItemToQueue, ③ TickType_t xTicksToWait );  | 
功能概述  | 在任务中往队列中传入消息 xQueueSend 等价于xQueueSendToBack 入到队尾 xQueueSendToFront 入到队头  | 
参数  | ①:消息队列句柄 ②:要发送的消息的地址 ③:阻塞等待时间  | 
返回值  | pdPASS:发送成功 errQUEUE_FULL:队列已经满,发送失败  | 
注意事项  | None  | 
函数原型  | #include “FreeRTOS.h” #include “queue.h” BaseType_t xQueueSendFromISR/xQueueSendToFrontFromISR/xQueueSendToBackFromISR ( ① QueueHandle_t xQueue, ②const void * pvItemToQueue, ③ BaseType_t *pxHigherPriorityTaskWoken);  | 
功能概述  | 在中断中往队列中传入消息 xQueueSendFromISR 等价于xQueueSendToBackFromISR 入到队尾 xQueueSendToFrontFromISR 入到队头  | 
参数  | ①:消息队列句柄 ②:要发送的消息的地址 ③:NULL  | 
返回值  | pdTRUE:发送成功 errQUEUE_FULL:队列已经满,发送失败  | 
注意事项  | 调用此函数,会触发上下文切换(当前被中断的任务优先级低于解除阻塞的任务) 在启动调度器之前不能调用此函数  | 
函数原型  | #include “FreeRTOS.h” #include “queue.h” BaseType_t xQueueReceive( ①QueueHandle_t xQueue, ②void *pvBuffer, ③TickType_t xTicksToWait );  | 
功能概述  | 在任务中读取消息队列消息  | 
参数  | ①:消息队列句柄 ②:接收消息的缓冲区 ③:阻塞等待时间  | 
返回值  | pdPASS:创建失败 errQUEUE_EMPTY:消息队列为空  | 
注意事项  | None  | 
函数原型  | #include “FreeRTOS.h” #include “queue.h” BaseType_t xQueueReceiveFromISR( ① QueueHandle_t xQueue, ② void *pvBuffer, ③BaseType_t *pxHigherPriorityTaskWoken );  | 
功能概述  | 在中断中读取消息队列消息  | 
参数  | ①:消息队列句柄 ②:接收消息的缓冲区 ③:NULL  | 
返回值  | pdPASS:创建失败 pdFAIL:消息队列为空  | 
注意事项  | 调用此函数,会触发上下文切换(当前被中断的任务优先级低于解除阻塞的任务) 在启动调度器之前不能调用此函数  | 
