FreeRTOS消息队列实验与出现的问题

目录

实验名字:队列操作实验

1、实验目的

2、实验设计

3、实验工程

4、实验程序与分析

●任务设置

● 其他应用函数

● main()函数

● 任务函数

●中断初始化及处理过程

5.程序运行结果分析

6.进行实验移植时所遇到的问题

1.项目中mymalloc等函数缺少

2.L6218E:xTimerPendFunctionCallFromISR报错

L6218E:xTimerCreateTimerTask报错


实验名字:队列操作实验

1、实验目的

       学习使用 FreeRTOS 的队列相关 API 函数,学会如何在任务或中断中向队列发送消息或者 从队列中接收消息。

2、实验设计

本实验设计三个任务:start_tasktask1_task  Keyprocess_task 这三个任务的任务功能如下: start_task:用来创建其他 2 任务。

task1_task  :读取按键的键值,然后将键值发送到队列 Key_Queue 中,并且检查队列的剩 余容量等信息。

Keyprocess_task  :按键处理任务,读取队列 Key_Queue 中的消息,根据不同的消息值做相 应的处理。

实验需要三个按键 KEY_UP KEY2  KEY0 ,不同的按键对应不同的按键值, 任务 task1_task 会将这些值发送到队列 Key_Queue 中。

实验中创建了两个队列 Key_Queue  Message_Queue,队列 Key_Queue 用于传递按键值, 队列 Message_Queue 用于传递串口发送过来的消息。

实验还需要两个中断,一个是串口 1 接收中断,一个是定时器 2 中断,他们的作用如下: 串口 1 接收中断:接收串口发送过来的数据,并将接收到的数据发送到队列 Message_Queue 中。 定时器 2 中断:定时周期设置为 500ms,在定时中断中读取队列 Message_Queue 中的消息,并 将其显示在 LCD 上。

3、实验工程

下面是实验例程,有需要自取。

通过百度网盘分享的文件:FreeRTOS实验13-1 FreeRTOS队列操作实验
链接:https://pan.baidu.com/s/19wyteow1w0eVeIwCqQB7gg 
提取码:y1bf

4、实验程序与分析

●任务设置

//任务优先级
#define START_TASK_PRIO		1
//任务堆栈大小	
#define START_STK_SIZE 		256  
//任务句柄
TaskHandle_t StartTask_Handler;
//任务函数
void start_task(void *pvParameters);

//任务优先级
#define TASK1_TASK_PRIO		2
//任务堆栈大小	
#define TASK1_STK_SIZE 		256  
//任务句柄
TaskHandle_t Task1Task_Handler;
//任务函数
void task1_task(void *pvParameters);

//任务优先级
#define KEYPROCESS_TASK_PRIO 3
//任务堆栈大小	 
#define KEYPROCESS_STK_SIZE  256 
//任务句柄
TaskHandle_t Keyprocess_Handler;
//任务函数
void Keyprocess_task(void *pvParameters);

(1)、队列 Key_Queue 用来传递按键值的,也就是一个 u8 变量,所以队列长度为 1 就行了。 并且消息长度为 1 个字节。

(2)、队列 Message_Queue 用来传递串口接收到的数据,队列长度设置为 4,每个消息的长 度为 USART_REC_LEN( usart.h 中有定义)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值