1. 对芯片的要求
- 处理器
16
,32
或64
位微控制器或处理器- 时钟频率最低
16 MHz
时钟频率Flash/ROM
对于非常重要的组件要求大于 64 kB (建议大于180 kB)RAM
静态 RAM 使用量约 2 kB,取决于所使用的功能和对象类型
堆栈
:大于 2kB (建议大于 8 kB)
动态数据(堆)
:大于 2 KB(如果使用多个对象,则建议大于 16 kB)。由lv_conf.h
中的LV_MEM_SIZE
宏进行设置
显示缓冲区
:大于水平分辨率像素(建议大于 10 行水平分辨率),MCU 或外部显示控制器中的一帧缓冲区- 编译器必须支持
C99
或更高版本的编译器- 技术栈具备基本的 C (或C ++) 知识:指针,结构,回调
2. 下载源码包
在移植之前需要先下载源码包,源码包可以通过使用
GitHub
进行克隆或下载,在Github
中搜索lvgl
即可搜索到lvgl
的官方仓库,进入官方仓库即可使用 git 克隆到电脑本地,或直接点击下载同样可将整个源码包下载到电脑本地中。
3. 概览源码目录
主要需要使用的有:examples/
,src/
,lv_conf_template.h
,lvgl.h
。分别为 lvgl 例程文件夹,源码文件夹,lvgl 配置文件模板,lvgl 主要头文件。
3.1. src 源码目录
core
核心源码
draw
绘图源码
extra
用于实现额外功能,一些高级界面实现
font
内置字体
gpu
GPU 驱动实现,这需要所使用的芯片支持
hal
硬件抽象层
misc
杂项
widget
基础界面组件
3.2. examples 例程目录
anim
动画使用例程
arduino
支持 arduino 的配置文件,一般不使用,除非使用 arduino
assets
一些小组件的代码或图片数组,为了便于知道代码产生的样式还配套了对应样式图片
event
一些 lvgl 事件编写与使用例程
get_started
组件使用例程
layouts
lvgl 布局使用例程
porting
lvgl 驱动对接方法模板
scroll
lvgl 滚动使用例程
styles
组件风格使用例程
widgets
同样是 lvgl 组件使用例程
总体来说这个文件夹都是顾名思义为一些使用参考代码,想快速的查看效果就可以复制使用这里的代码来生 成需要的组件进行查看,这个目录较为常用。
4. stm32 模板工程
移植
lvgl
之前我们需要搭建一个能够编译 stm32 代码的编译工程,用于编译 stm32 相关代码文件(比如常用的Keil-MDK
工程)。对于开发人机界面来说此时也需要准备一块显示屏(至于什么样的显示屏都可以,lvgl 内部并不关心你使用的是何种屏幕),并使用 stm32 来驱动它。至于如何搭建 stm32 编译工程这里并不介绍,因为这里主要说明如何来将lvgl
移植到 stm32,同时相信能够看到这里那一定已经知道如何搭建 stm32 的编译工程了。
注意:这里 keil 版本使用
keil5.26
STM32 使用STM32F407VET6
,当然这个移植方法不仅适用于,stm32 系列单片机或其他类型的单片机均适用。STM32F407VET6
5. 开始移植
5.1 删减不需要使用的文件夹和文件
解压前面下载的 lvgl 源码包可以得到一个
lvgl-8.0.2
文件夹,留下lvgl-8.0.2/examples/
文件夹,lvgl-8.0.2/src/
文件夹,lvgl-8.0.2/LICENCE.txt
文件,lvgl-8.0.2/lv_conf_template.h文件
,lvgl-8.0.2/lvgl.h文件
,lvgl-8.0.2/README.md文件
,其余均可删除。
同时将lvgl-8.0.2/examples/porting
文件夹剪切到上一层目录(即lvgl-8.0.2/
),最后如下图所示
5.2 重命名文件
将
lvgl-8.0.2/lv_conf_template.h
文件改为lv_conf.h
,(配置文件)
将lvgl-8.0.2/porting/lv_port_disp_template.c
文件改为lv_port_disp.c
(显示相关)
将lvgl-8.0.2/porting/lv_port_disp_template.h
文件改为lv_port_disp.h
(显示相关)
将lvgl-8.0.2/porting/lv_port_fs_template.c
文件改为lv_port_fs.c
(文件系统相关)
将lvgl-8.0.2/porting/lv_port_fs_template.c
文件改为lv_port_fs.h
(文件系统相关)
将lvgl-8.0.2/porting/lv_port_indev_template.c
文件改为lv_port_indev.c
(输入设备相关)
将lvgl-8.0.2/porting/lv_port_indev_template.c
文件改为lv_port_indev.c
(输入设备相关)
6. 添加 lvgl 文件到 keil5
6.1 添加 lvgl 源码
添加
lvgl-8.0.2/src/core
目录下的所有 c 文件
添加lvgl-8.0.2/src/draw
目录下的所有 c 文件
添加lvgl-8.0.2/src/extra
目录下的所有 c 文件
添加lvgl-8.0.2/src/font
目录下的所有 c 文件
添加lvgl-8.0.2/src/gpu
目录下的所有 c 文件
添加lvgl-8.0.2/src/hal
目录下的所有 c 文件
添加lvgl-8.0.2/src/misc
目录下的所有 c 文件
添加lvgl-8.0.2/src/widgets
目录下的所有 c 文件
添加
lvgl-8.0.2/porting/lv_port_disp.c
,因为这里仅查看移植成功后的显示效果,所以这里目前仅添加显示相关设备接口文件。
6.2 添加 lvgl 源码头文件路径
需要添加的头文件路径有如下几个
lvgl8.0.2/
lvgl8.0.2/src
lvgl8.0.2/porting
详细查看:https://cloud.tencent.com/developer/article/1862110
7. 修改 lv_conf.h
将 lvgl 配置头文件的 条件编译置为 1,启用配置。
8. 修改 stm32 堆栈大小
打开 stm32 的启动文件进行修改,如下图
9. keil c99 模式
按照下图所示的步骤可以将 keil5 设置为
c99
模式。
10. 对接屏幕绘图接口
该部分详细内容查看后面的文章
lvgl8.0 对接屏幕驱动
这部分。