LVGL移植教程
Posted 耳 东
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LVGL移植教程相关的知识,希望对你有一定的参考价值。
LVGL是一个商业开源的UI库,内存占用量最少只需要 16K,UI效果动画等也十分丰富。因此凭借这低内存消耗,控件主题等丰富的特点发展也是比较快的。目前LVGL的迭代更新对API接口改动还是比较大的,此文档针对 LVGL8.1.1版本进行说明移植过程。
1.下载LVGL源码
可直接进入LVGL官网查看github地址直接下载。
2拷贝源码
将下图选中的文件拷贝到编译目录下,并修改以下文件名称
lv_conf_template.h -> lv_conf.h
examples/porting/lv_port_disp_template.c -> lv_port_disp.c
examples/porting/lv_port_disp_template.h -> lv_port_disp.h
3.修改源码
lv_config.h
打开 #if 0 选项使能内容
添加宏设置屏幕分辨率
#define LV_HOR_RES_MAX 480
#define LV_VER_RES_MAX 800
修改 LV_COLOR_DEPTH 设置对应的颜色深度
example/proting/lv_port_disp.c
打开 #if 0 选项使能内容
修改头文件名 #include "lv_port_disp.h"
lv_port_disp_init函数中,选择合适的显示内存管理方式,以及内存大小,设置屏幕分辨率如下图所示,对画图buff初始化的时候也可以只使用一个buff另外一个传NULL
注:在调用lv_disp_draw_buf_init接口初始化gui缓存时,若只使用一个buff,gui对没一帧的刷新都将会是整屏幕刷新,使用两个buff时,gui只会对需要更新的区域进行刷新。因此使用一个buff时,内存占用更少了,但搬运到屏幕上的数据量就更大,使用两个buff时则相反。
4.添加初始化,传入系统tick
a.调用 lv_init(); 和 lv_port_disp_init(); 完成初始化。
b.定时调用 lv_tick_inc(5); 接口,传入的参数为2此调用该接口的时间差,单位为ms。
c.在主循环中不断调用 lv_task_handler(); 接口处理LVGL 各种事件。
5.结语
至此LVGL显示部分已经全部移植完了,剩下关于文件系统以及TP的接口在 examples/porting/ 下还有几个文件按照显示部分的方法在回调中填入对应的返回值并初始化就可以了,最后写个demo跑一下
以上是关于LVGL移植教程的主要内容,如果未能解决你的问题,请参考以下文章