一.学习背景
LVGL是一款开源的嵌入式GUI框架。轻量级和灵活性是其著有的特征。我们在开发如智能手表,仪器表盘时可以采用这个框架。
二.移植LVGL
在移植之前我们要确保我们的硬件芯片符合移植的要求,以下表为标准:
Name Minimal Recommended
Architecture 16, 32 or 64 bit microcontroller or processor
Clock > 16 MHz > 48 MHz
Flash/ROM > 64 kB > 180 kB
Static RAM > 16 kB > 48 kB
Draw buffer > 1 ×hor. res. pixels > 1/10 screen size
Compiler C99 or newer
首先,要在官方开源地址下下载LVGL的源文件。
这里给出官方下载链接:GitHub - lvgl/lvgl: Embedded graphics library to create beautiful UIs for any MCU, MPU and display type.
作为初学者的话我们一般选择V8.3版本的,适用范围广,教程相对多。
下载解压后我们可以得到:
然后我们在另一个目录下新建一个文件夹,在这个文件夹中复制我们需要移植的一些文件,这里我们只需要以下文件夹:
同时我们将“lv_conf_template.h”改为“lv_conf.h”和以下地址中的文件后的“_template”也去掉。
更改后如下:
紧接着我们需要创建一个工程并将LVGL库文件移植进去我们的工程。这里以CubeMX创建的STM32F407VET6的工程为例。
我们向空工程的文件夹中添加“lvgl”文件夹(注意这里最好使用小写目录名,下面创建的任何东西都建议小写,只是建议,并无太大影响!!!),并向其中复制我们刚才改好的文件,如下:
完成以上之后我们就可以开始正式进入Keil配置工程项了,进入工程管理界面,添加以下文件组:
文件夹名称 (Groups) 用于存放什么文件
LVGL_myGui 用户自己的界面代码文件、官方demo等
LVGL_conf LVGL 的两个h文件
LVGL_porting LVGL 的接口文件, 如显示、触摸屏、键盘等
LVGL_src LVGL 的所有底层c文件
完成后最好编译一下以免有错误。
注意以下为最重要的步骤,向刚才创建的工程组中分别添加文件,具体如下:
组 文件
LVGL_myGUI 个人文件,暂不需添加。
LVGL_conf LVGL根目录中的lv_conf.h、lvgl.h
LVGL_porting LVGL/ examples / porting中的“lv_port_disp.c 、lv_port_disp.h、 lv_port_indev.c、lv_port_indev.h”
LVGL_src LVGL/ src目录下的所有.c文件(注意:这里是所有.c文件,包括所有子目录下的和src根目录下的)(笔者数了一下,大概是201个,读者可自己数一下)
添加完以后如下(src未展示完全):
下一步,注意将C99勾选上
向头文件中添加这几个文件夹:
此时可以再编译一次,若没有错误则算成功。