消息队列的概念及其意义
1、定义
消息队列(queue),可以在任务与任务间、中断和任务间传递消息
实现任务接收来自其他任务或中断的不固定长度的消息
2、FreeRTOS消息队列的介绍
任务和中断发送消息到消息队列,消息队列接收到消息之后按照尺寸大小存储消息,其他任务想从消息队列中获取数据。当队列中的消息是空时,挂起(pend)读取任务,用户还可以指定挂起的任务时间(timeout)。
3、FreeRTOS的工作原理
消息队列就是一段内存空间
消息队列函数应用
实例操作:
功能需求
1、使用消息队列检测串口输入
2、通过串口发送字符串openled6,openled7,openled8,openled9,分别打开板载led6,led7,led8,led9
3、通过串口发送字符串closeled6,closeled7,closeled8,closeled9,分别关闭板载led6,led7,led8,led9
消息队列API
xQueueCreate()
1:包含头文件。
2:动态创建。(什么是静态创建,什么是动态创建)
xQueueSend()
xQueueSendFromISR()
第三个参数NULL;当你进行发送时,会去比较当时产生中断的任务是否有优先级高的任务进入就绪态。???
xQueueReceive()
xQueueReceiveFromISR()
STM32CubeMX功能配置
因为LED为拉低导通,所以初始设置为高电平
打开USART的中断
创建消息队列
osMessageQDef(CmdQueue, 20, uint8_t);
CmdQueueHandle = osMessageCreate(osMessageQ(CmdQueue), NULL);
消息队列接收和发送功能开发