一、目的
掌握基础的消息队列操作。
先定义一个队列,两个任务,一个任务根据GPIO值向消息队列发数据,另一个任务一直等待消息队列里的数据,有数据了就输出,没有则一直等待。
二、配置
在STM32cueMX中的FreeRTOS界面tasks and queues中,添加两个任务,一个用于检测按键是否按下,并消息入队,一个用于接收队列消息并输出信息,另外添加一个queue,设置为数量为1,数据大小为uint8_t。
三、主要程序
注意:在STM32cueMX生成的FreeRTOS程序中,队列相关底层函数再一次被封装了,封装在cmsis_os.h和cmsis_os.c文件中,因此可以直接调用此文件的函数,自动生成的队列句柄也是通过这文件里的函数。
程序如下:
/* Includes ------------------------------------------------------------------*/
#include "FreeRTOS.h"
#include "task.h"
#include "main.h"
#include "cmsis_os.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "usart.h"
osThreadId defaultTaskHandle;
osThreadId LedmyTask02Handle;
osThreadId PrintfmyTa