硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1332|回复: 6
收起左侧

[FreeRTOS] 请教FreeRTOS中数组传递的思路和方向

[复制链接]

26

主题

41

回帖

119

积分

初级会员

积分
119
发表于 2024-5-13 11:38:06 | 显示全部楼层 |阅读模式


我有个项目,是通过红外传感器采集温度数据,然后将得到的温度数据处理后(主要是大量浮点运算以及双线性插值运算)生成一个RGB数组,假设该数组为unsigned short  rgb_data[320*240],RGB565格式,
然后把这个数组直接刷到LCD上显示图像。

MCU用的是STM32H743, 裸机已经实现了,比较简单,现在是想通过FreeRTOS+LVGL图形库的方式来实现同样的功能。
由于初学FreeRTOS, 看了硬汉哥的教程,还有些疑问,

我分了5个任务如下
任务1: GUI图像显示,RGB数组刷新,用的是LVGL图形库  //优先级 3  
任务2: 温度数据的处理,温度数据的浮点运算,双线性插值运算,最后得到RGB大数组  //优先级6  
任务3: 实现两个功能:1,SD卡的读写(主要是实现图像的截图功能,然后把截图存在SD卡)。2,当设备通过USB插入到PC时,把SD卡模拟成U盘,可以在电脑上操作。  //优先级 4
任务4: 串口调试   //优先级  2
任务5: 充电检测,检测USB插入,以及充电状态   //优先级 1
任务6: 电阻触摸检测   //优先级 5

不知道我以上的任务分配和优先级分配是否合理?还请硬汉哥指导,谢谢。

另外,如上所说,任务2中计算后生成的数组rgb_data[320*240],最终是要传递给任务1中显示的,我看了教程中任务之间传递是依靠队列,不太明白这个队列到底传递的是什么?是简单的通知消息,还是数据?
比如我这个数组rgb_data[320*240]比较大,可以通过队列传递吗?会不会影响实时性?在裸机中,我直接把他定义为全局数组,传递比较简单。
在FreeRTOS中,有什么方法可以在任务2中计算得到数组后,任务1可以立即获得这个数组刷新显示呢?
我考虑是不是可以不用队列,就按照裸机方法,定义rgb_data[320*240]为全局数组,任务2计算完成更新后,发送队列消息通知任务1,任务1直接从这个全局数组取数据也是可以的?

我现在还没有具体去写代码测试,想先请教下,好有个思路和方向。

谢谢
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115454
QQ
发表于 2024-5-14 09:38:53 | 显示全部楼层
任务2和任务1可以考虑做到一个任务里面就行。分成两个作用不是很大。
回复

使用道具 举报

2

主题

18

回帖

24

积分

新手上路

积分
24
发表于 2024-5-26 17:22:01 | 显示全部楼层
你这个项目很不错,还有采集到的温度
回复

使用道具 举报

2

主题

18

回帖

24

积分

新手上路

积分
24
发表于 2024-5-26 17:23:37 | 显示全部楼层
一个疑问:温度通过插值成一个数组显示到屏幕上,啥意思?  
回复

使用道具 举报

2

主题

18

回帖

24

积分

新手上路

积分
24
发表于 2024-5-26 17:24:41 | 显示全部楼层
一个疑问,温度数据进行插值啥意思?   温度不就是一个温度数据吗,为啥要插值?
回复

使用道具 举报

2

主题

18

回帖

24

积分

新手上路

积分
24
发表于 2024-5-28 22:46:04 | 显示全部楼层
评论不小心回复多了,怎么删除哇。哈哈哈
回复

使用道具 举报

2

主题

18

回帖

24

积分

新手上路

积分
24
发表于 2024-5-28 22:46:38 | 显示全部楼层
eric2013 发表于 2024-5-14 09:38
任务2和任务1可以考虑做到一个任务里面就行。分成两个作用不是很大。

哦,确实哦。
一帧处理完就立马显示呗。
没必要还分到另一个任务里面
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-4-26 13:54 , Processed in 0.364043 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表