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 03、在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中图片的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小度路由器离线下载根本就是垃圾
- 下一篇: Flash图片的内存计算公式