消息对列我认为就是一个FREERTOS能够识别的数组,相当于全局变量。
以前我死烦消息队列,因为我认为全局数组完全可以代替它。今天的程序感觉挺好用。
首先用STM32CUBEMX新建项目,直接打开开发板,这样管脚和串口都不用定义。
然后建立两个任务,一个每隔一分钟向消息队列发一个1,另一个任务是收消息队列里的数。
还要建立一个消息队列16个数的默认消息队列:
然后生成MDK5代码。之后向两个任务中加代码:
-
-
- void mySendTaskfun(void const * argument)
- {
-
- for(;;)
- {
- osMessagePut(myQueue01Handle,1,0);
- osDelay(1000);
- }
-
- }
-
-
-
- void myReceivefun(void const * argument)
- {
-
- osEvent theEvent;
- for(;;)
- {
- theEvent = osMessageGet(myQueue01Handle,osWaitForever);
- if (theEvent.status == osEventMessage)
- {
- printf("Receive message......%d\n",theEvent.value.v);
- }
- }
-
- }
而消息队列的声明,STM32CUBEMX早已经定义好了:
- osMessageQDef(myQueue01, 16, uint16_t);
- myQueue01Handle = osMessageCreate(osMessageQ(myQueue01), NULL);
-
接着就是编译、下载、运行:
可见,FREERTOS的消息队列也不是很复杂。下次评测想写一个串口接收并给消息队列的程序。