lvgl开发-1.我的第一个lvgl程序

  1. LVGL开发-1.移植LVGL
    1. 移植过程
      1. 移植第一步:下载文件
      2. 文件的提取
      3. 代码编译的设置
      4. 修改配置文件
      5. 修改显示的必要文件
    2. debug部分

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
2
/** Color depth: 1 (I1), 8 (L8), 16 (RGB565), 24 (RGB888), 32 (XRGB8888) */
#define LV_COLOR_DEPTH 16

这里还新加入了对屏幕大小的宏定义

1
2
#define MY_DISP_HOR_RES 160
#define MY_DISP_VER_RES 128

修改显示的必要文件

在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
2
3
4
5
6
7
8
9
10
11
12
13
/*=================
* OPERATING SYSTEM
*=================*/
/** Select operating system to use. Possible options:
* - LV_OS_NONE
* - LV_OS_PTHREAD
* - LV_OS_FREERTOS
* - LV_OS_CMSIS_RTOS2
* - LV_OS_RTTHREAD
* - LV_OS_WINDOWS
* - LV_OS_MQX
* - LV_OS_CUSTOM */
#define LV_USE_OS LV_OS_FREERTOS

配置完以后,果然报错少了好多。还需要加上几个os相关的文件进去,如lv_os.c,lv_freeertos.c等。


本文移植参考
https://blog.csdn.net/qq_59953808/article/details/126445608


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以邮件至 1186703947@qq.com

💰

×

Help us with donation

相册 动态菜单1