1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > STM32移植Littlevgl(LVGL)V8.0.2使用文件系统+BMP解码显示外部FLASH中图片

STM32移植Littlevgl(LVGL)V8.0.2使用文件系统+BMP解码显示外部FLASH中图片

时间:2023-09-01 08:36:05

相关推荐

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

三、添加文件系统

下载链接:

/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_IF1#if LV_USE_FS_IF#define LV_FS_IF_FATFS 'U' //可以自定义#endif /*LV_USE_FS_IF*/

下面一步很重要,不添加图片显示不了,默认是1,改为0

#define LV_USE_USER_DATA0

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]*/ 大小

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。