STM32+HAL库+FreeRTOS+SPI+DMA移植LVGL—拓展篇:FATFS文件系统读取SD卡图片显示到LCD

前言

本章将系统讲解LVGL在嵌入式平台的完整开发流程,分为三大实战阶段:首先完成LVGL基础移植,接着通过DMA加速与源码级优化提升性能,最终结合GUI-Guider进行高效UI设计。我们将以踩坑日记的形式,深入剖析移植过程中的典型问题及解决方案。首篇聚焦LVGL移植环节,详细演示从零搭建图形框架的关键步骤。

本章为拓展篇,使用SDIO读取SD卡,通过FATFS文件系统将SD卡中的图片显示到LCD屏幕。

本章基于前面章节作为拓展,需要确保成功移植LVGL后,再进行本章内容。如果没有移植成功可以参考我以往的其他文章 STM32+HAL库+FreeRTOS移植LVGL(8.3)驱动SPI协议的LCD触摸屏—从点亮到提速之移植篇_lvgl在嵌入式设备上移植-CSDN博客

cubemx 配置

添加SDIO配置,打开中断

Freertos任务需要提供较大内存,否则会导致运行不正常。

修改堆栈大小,生成代码

添加源代码文件(基于正点原子)

FATFS:直接使用正点原子提供的例子,不使用 cubemx 生成,测试时注册文件失败,不知道是什么问题,有懂的大佬欢迎指导一下。(FATFS 版本为R0.12c, cubemx版本为STM32Cube FW_F4 V1.27.1)

LVGL:使用正点原子提供的8.2版本,使用前面章节的8.3版本出现内存不足问题,所以直接使用正点原子的更加方便。

MALLOC:内存管理文件

SDIO:基于正点原子进行修改的SD卡 驱动代码

添加文件到工程

添加文件路径

修改代码:把 SDIO_BUS_WIDE_4B 改为 SDIO_BUS_WIDE_1B

cubemx生成的代码好像是有点问题,否则会初始化失败

修改内部动态内存池的大小,内存池太小会导致图片显示不出来

使用自定义tick源,则不需要多使用一个定时器

LV_COLOR_16_SWAP配置为 1.

打开GIF译码器库

main中添加代码

FREERTOS任务中添加LVGL计时器

修改SD卡中的GIF路径和名称

效果

图像太大比较占内存,如果内存不够则会显示不正常,推荐先用小图片测试。

代码:

gitee: Chenpz/SDcard_TEST_FREERTOS

百度网盘: https://pan.baidu.com/s/10j8OuAICQ4-thbd9GD1wBg?pwd=uyuv 提取码: uyuv

 

 

 

 

 

 

 

### 将LVGL图形移植到基于STM32的标准项目并集成FreeRTOS #### 移植准备 为了成功将LVGL图形移植到基于STM32的标准项目中,并集成FreeRTOS,需先准备好必要的工具链和环境设置。确保安装了适合的IDE(如Keil MDK或STM32CubeIDE),以及获取最新的STM32标准外设版本。 #### 配置硬件资源 配置LCD显示器接口,通常通过SPI或I2C连接;初始化触摸屏控制器以便支持触控功能。这些都需要按照具体使用的显示屏模块手册来完成相应的GPIO、时钟使能及时序参数设定[^1]。 #### 添加LVGL文件 下载官方发布的LVGL源码包,将其解压并将所有`.c`和头文件复制粘贴到项目的指定目录内。注意保持原有的文件夹结构不变,这有助于编译器识别依赖关系。 对于本教程而言,不会涉及到对LVGL内部特性的精简优化工作,因此全部组件都将被纳入工程之中。 #### 整合FreeRTOS操作系统 引入FreeRTOS核心及其配套的支持函数实现多线程管理机制。参照特定于STM32平台上的FreeRTOS移植指南,在`FreeRTOSConfig.h`里定义好中断服务程序入口名称,例如添加如下宏定义: ```c #define vPortSVCHandler SVC_Handler ``` 此步骤确保RTOS能够正确响应来自底层硬件产生的异常事件处理请求[^3]。 #### 创建任务调度框架 利用FreeRTOS API创建多个独立运行的任务单元,分别负责不同的业务逻辑流程控制——比如一个用于刷新显示界面的任务,另一个用来监听按键输入变化等。合理规划优先级顺序可以提高系统的整体性能表现。 #### 测试与调试 编写简单的测试用例验证整个系统的稳定性及功能性是否正常运作。可以通过观察屏幕输出效果判断GUI渲染质量的好坏程度;借助串口打印日志信息辅助定位潜在错误所在位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值