STM32移植Littlevgl(LVGL)V8.0.2使用文件系统+BMP解码显示外部FLASH中图片
说明:选择BMP解码图片的方式,是因为此方式不需要占用太多的RAM
一、主要参数及版本
MCU:STM32F103ZET6
LCD:2.8寸ILI9341,使用FSMC驱动
SPI FLASH:W25Q64
FATFS:R0.11
STM32Cube:Version 6.3.0
LittleVGL:V8.0.2
GUI Guider:GUI-Guider-1.3.1-GA,此上位机使用的是LVGL V8.0.2
二、基础说明
本文使用STM32 + MSC + FATFS + LVGL + 文件系统 + BMP直接解码SPI FLASH中的图片,显示在LCD上。
USB MSC + FATFS使用STM32Cube直接生成,这里不做介绍,主要以LVGL文件系统的移植和BMP解码移植为主要内容。
1、STM32Cube生成USB MSC和FATFS
2、移植LVGL到项目,并编译正常,版本V8.0.2
GitHub - lvgl/lvgl at v8.0.2
3、上位机UI设计软件采用NXP的GUI Guider
下载链接:
GUI Guider | NXP Semiconductors
三、添加文件系统
下载链接:
https://github.com/lvgl/lv_fs_if
1、将lv_fs_fatfs.c、lv_fs_if.c、lv_fs_if.h添加到项目
2、lv_conf.h修改
在lv_conf.h中添加:
/*File system interface*/
#define LV_USE_FS_IF 1
#if LV_USE_FS_IF
#define LV_FS_IF_FATFS 'U' //可以自定义
#endif /*LV_USE_FS_IF*/
下面一步很重要,不添加图片显示不了,默认是1,改为0
#define LV_USE_USER_DATA 0
3、在main.c中添加初始化lv_fs_if_init()
4、修改lv_fs_fatfs.c
修改fs_init()
这一步很重要,确少这一步会导致文件系统用不起来。
/*********************** STATIC FUNCTIONS**********************/FATFS fs; /* Work area (file system object) for logical drives */FRESULT res;//UINT br, bw; /* File R/W count */BYTE work[_MAX_SS]; /* Work area (larger is better for processing time) */DWORD fre_clust;/* Initialize your Storage device and File system. */static void fs_init(void){/* Initialize the SD card and FatFS itself.* Better to do it in your code to keep this library utouched for easy updating*/res = f_mount(&fs, "U", 1); //挂载文件系统到W25Q64if (res==FR_NO_FILESYSTEM) //如果是新芯片还没有文件系统{f_mkfs("U", 0, sizeof(work));}}
四、添加BMP解码
下载链接:
GitHub - lvgl/lv_lib_bmp: BMP decoder library for LVGL
1、将lv_bmp.c、lv_bmp.h添加到项目
2、在main.c中添加初始化lv_bmp_init()
3、在需要使用的时候添加 #include “lv_bmp.h”
五、图片显示
1、在虚拟U盘中添加图片,注意LV_COLOR_DEPTH 16需要与BMP图片一致
2、读取图片
lv_img_set_src(ui->home_language,"U:/image/image.bmp");
注意:如果LCD上显示”No Data”,修改lv_conf.h中#define LV_MEM_SIZE (16U * 1024U) /*[bytes]*/ 大小
STM32移植Littlevgl(LVGL)V8.0.2使用文件系统+BMP解码显示外部FLASH中图片相关推荐
- 【RTT】移植:LVGL 8.0.2
开发板:潘多拉开发板 系统版本:v4.0.3 LVGL版本:8.0.2 注:这篇文章就简单记录下编译成功,跑了一个 demo 的过程,至于是否完全移植成功,不确定哈,毕竟 LVGL 还 ...
- LVGL加载外部flash上图片
void loadBitmap(lv_img_dsc_t *image, uint32_t start_addr, uint32_t file_size) { uint8_t *pbuf; ...
- STM32Cube_FW_F1_V1.0.0固件库学习(四)外部中断 中
V4.0和V3.5的中断改了挺多,找了很久...小白不容易啊... 在这个函数中有下面这么一段话,具体的配置参数就是最上面宏定义的.可以直接调用HAL_GPIO_Init解决. /*--------- ...
- STM32移植LVGL8.0.2超详细的保姆级教程附移植好的工程文件
文章目录 前言 一.什么是LVGL? 二.先看效果 三.移植前准备工作 1.准备原有工程 2.下载LVGL源码 四.开始移植 1.把源码搬运到工程文件夹里 2.把搬运好的代码添加到keil工程 3.动 ...
- LittleVGL (LVGL)干货入门教程四之制作和使用中文汉字字库
LittleVGL (LVGL)干货入门教程四之制作和使用中文汉字字库 前言: 阅读前,请确保你至少拥有以下条件: 已实现显示API(教程一已实现, 链接:LittleVGL (LVGL)入门教程一之 ...
- LittleVGL (LVGL)干货入门教程二之LVGL的输入设备(indev)API对接。
LittleVGL (LVGL)干货入门教程二之LVGL的输入设备(indev)API对接 前言: 阅读前,请确保你拥有以下条件: 你已经完成"显示API"的移植. 你已经实现了一 ...
- STM32移植FatFS文件系统最新版R0.14b
STM32移植FatFS文件系统 目录 一.前言 二.硬件及软件准备 三.移植FatFS文件到工程文件夹下 四.将移植文件添加到工程中 五.修改"diskio.c"文件 六.配置& ...
- STM32移植时printf串口打印中文乱码,mark一下
STM32移植后,使用printf进行串口打印,中文显示乱码: 移植时是先新建.txt文档,复制完代码后改为.c文件,查找相关资料,得知.c文件为"UTF-8"编码,需要将编码格式 ...
- STM32 IAP升级--内部FLASH和外部FLASH两种方式实现
芯片型号STM32F103RET6,flash大小512K,起始地址0x08000000 一般说STM32内部FLASH就是指主存储器区域 [注]此实验中启动方式设置为复位后从主闪存存储器启动(BOO ...
最新文章
- TextView 显示图像+文字的方法
- Visual Studio各个版本对应关系
- CF1369F-BareLee【博弈论,SG函数】
- C/C++中字符串切割(split)
- Java设计模式(7)——装饰者模式
- 视觉SLAM十四讲_3-李群和李代数
- php安装ziparchive扩展,记一次PHP扩展-ZipArchive安装
- ofd文件转化成pdf的免费方法
- 转速、电流双闭环控制的直流调速系统
- Windows7 简体中文旗舰版下载 (MSDN官方发布正式版原版镜像)
- rtklib-RINEX文件读取-rinex.c解析(二)
- 2021年下半年软考软件设计师真题答案解析
- nginx反向代理进行统一鉴权
- 黑苹果睡眠重启后死机_iPhone 所有机型“死机/卡机”重启方法
- python怎么调用类中的函数_类中的python函数调用
- 大数据技术之Hive(四)函数、压缩和存储
- prometheus监控告警功能
- Eclipse中怎样将java项目转化为web项目?
- c语言程序设计第三版杜有福,C语言程序设计习题答案 杜有福
- 不定期福利第二期讲王争:羁绊前行的,不是肆虐的狂风,而是内心的迷茫