LVGL开发-1.移植LVGL
本次移植文件基于RTOS项目,采用芯片为STM32F103RCT6,可能会内存不足。
移植过程
移植第一步:下载文件
在lvgl的github仓库里进行下载,下载链接
使用git指令对这些文件进行下载。
文件的提取
在STM32的项目文件夹中,我们创建一个文件夹专门用来存放lvgl的代码,新建LVGL文件夹。
在下载的lvgl文件中,我们需要提取出我们需要使用的文件。
将上图中的四个文件加入到lvgl文件夹中。
代码编译的设置
将lvgl/lv_conf_template.h 作为 lv_conf.h 复制到 lvgl 文件夹旁边,
将其第一个的 #if 0 更改为 1 以使能文件的内容并修改设置 LV_COLOR_DEPTH 宏。
lv_port_display_template.c代表我们的显示接口
lv_port_fs_template.c代表文件系统接口
lv_port_indev_template.c代表输入设备接口
在项目界面的Manage Project Items中,导入文件。
添加lvgl源文件
将lvgl/src目录下的core draw font misc widgets文件夹下的所有文件全部添加进lvgl组
添加了一大堆c文件以后,配置一下他们的库路径。
修改配置文件
修改lv_port_disp_template.h,把#if使能打开。并且#include”lvgl.h”
修改lv_port_disp_template.c,将开头的#if使能。
修改lv_conf.h,使能#if。并且根据显示设备更改color depth。
1 | /** Color depth: 1 (I1), 8 (L8), 16 (RGB565), 24 (RGB888), 32 (XRGB8888) */ |
这里还新加入了对屏幕大小的宏定义
1 |
修改显示的必要文件
在lv_port_disp_template.c中包含着显示的重要文件,这里我们只需要修改两处:
注释掉Example2和3的部分:
debug部分
照着步骤来,发现有较多的报错。可能是与博主版本不一致导致的。
现在尝试进行一步步的修复。
…\LVGL\src\widgets\win../../../lvgl.h(16): error: #5: cannot open source input file “lv_version.h”: No such file or directory
报错1:没有该头文件,发现在源文件中有这个头文件,加到我们的项目中。
E:\keil32project\LVGL移植\freertos_project\LVGL\src\stdlib\lv_mem.h(97) : void lv_free(void * data);
该报错来源于lv_port_indev_template.c或h文件,没有#if使能。
..\OBJ\LCD.axf: Error: L6218E: Undefined symbol lv_mutex_delete (referred from lv_draw_sw_mask.o).
报错显示了互斥锁的初始化啥的,应该是用到系统了。找了一路找到一个lv_os.h,应该是配置系统的。
我的项目用了RTOS,所以在lv_conf.h里配置OS系统。
1 | /*================= |
配置完以后,果然报错少了好多。还需要加上几个os相关的文件进去,如lv_os.c,lv_freeertos.c等。
本文移植参考
https://blog.csdn.net/qq_59953808/article/details/126445608
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以邮件至 1186703947@qq.com