概述
本文选用LVGL 8.3版本
8.3版本实测帧率比起9版本高,多个GUI工具支持
相关链接
LVGL官网 https://lvgl.io/
LVGL 文档 https://docs.lvgl.io/8.3/
LVGL仓库 https://github.com/lvgl
LVGL移植
获取源码
https://github.com/lvgl/lvgl/tree/release/v8.3
下载文件即可
文件解析
需要源码中这几个文件
demos 是示例文件
examples 主要是里面的接口文件
src 是源码文件
两个头文件
文件处理
examples
只留下
porting
一个文件夹
porting
内文件_template
后缀去掉
lv_conf_template.h
去掉_template
更改后文件
加入文件
将所有src中的c文件加入keil中
我这里分为3个文件组
LVGL_src
存放源码c文件
LVGL_conf
存放LVGL设置文件
LVGL_GUI
存放自己的GUI文件
脚本加入方法
文件太多了,每个文件夹都要加入比较麻烦
这里使用个python脚本来快速加入
import osfile_lst = []def print_dir_files(file_path):global file_lstfor file_path, sub_dirs, filenames in os.walk(file_path):if filenames:# 如果是文件,则加append到list中for filename in filenames:file_lst.append(os.path.join(file_path, filename))for sub_dir in sub_dirs:# 如果是目录,则递归调用该函数print_dir_files(sub_dir)if __name__ == '__main__':print_dir_files(r"C:\Users\HZ12138\Desktop\LVGL\src")#这里写src文件的绝对目录for file_lst_item in file_lst:zj = os.path.relpath(file_lst_item, r"C:\Users\HZ12138\Desktop\test")#这里写要相对路径的基位置file_name=zj.split("\\")[-1]if file_name[-1:]=='c':a=r"""<File><FileName>"""+file_name+"""</FileName><FileType>1</FileType><FilePath>"""+zj+"""</FilePath></File>"""print(a)
可得到类似这样的内容输出
建议先加入个文件实验下相对路径位置,之后再使用脚本
将MDK文件用文本打开
搜索
LVGL_src
名称再文件目录下添加刚才输出的内容即可
配置文件
将
lvgl.h
lvgl_conf.h
还有\examples\porting
下的文件加入LVGL_conf
将
lvgl.h
所在目录src
\examples\porting
加入头文件目录
Keil设置
打开O3优化和 时间优化 启用c99标准
屏蔽警告(
Misc Controls
)中加入
--diag_suppress=68,111,188,223,546,1295 --locale=english
Linker 中加入屏蔽警告代码
--diag_suppress=L6314W,L6329W
LVGL模拟器
下载安装
使用
VS2022
构建LVGL
模拟器,VS2022
安装请自行解决
模拟器地址
https://github.com/lvgl/lv_port_pc_visual_studio
注意请使用工具从git下克隆指定分支,不要直接下载,直接git克隆会默认最高版本
这里使用
Sourcetree
软件
如下设置,选则版本,选择递归子模块
打开文件运行这个文件即可
更改分辨率
修改
single_display_mode_initialization
函数里参数即可800->长
480->高
LVGL GUI工具
安装
使用
SquareLine Studio
直接从官网下载即可 有免费版本,正常注册即可https://squareline.io/downloads#lastRelease
建立工程
设置下分辨率 颜色宽度 LVGL版本即可
导出
导出文件
使用
将上述的所有 C H 文件加入
添加
ui.h
所在的头文件目录
导入
ui.h
#include"ui.h"
调用
ui_init();
即可