GUI简介
GUI:图形用户界面,是指采用图形方式显示计算机[泛称,指人机交互的机器]操作用户界面。
GUI库:图形用户界面库,调用GUI库的函数即可快速绘制所需的用户界面。
GUI库优势: 开发难度低(有可以设计GUI的软件,大大降低门槛)
可移植性高(只要硬件达到要求,适配也做好,就可以直接使用GUI库)
风格统一、协调
嵌入式系统中常用的GUI库:emWin
LVGL(主流)
TouchGFX(可以直接帮我们生成图形界面,不需要手敲代码)
QT(通过图形界面生成ui,在市场的占有率非常高)
LVGL简介
LVGL(Light and Versatile Graphics Library)是一个轻量、多功能的开源图形库。
特点: 支持多种输入设备(触摸屏、键盘、鼠标、编码器)
部件、功能丰富
具备高级图形特征
支持多种样式属性
C语言编写
LVGL移植要求
V8版本的lvgl移植要求:
16/32/64位微控制器或处理器
主控频率:>16MHz
Flash/ROM:>64kb,建议180kb以上
RAM:>8kb,建议24kb以上(ram的大小和优化lvgl的效果有关。)
图形缓冲区:>水平分辨率像素(还要看色彩是多少byte),建议大于1/10屏幕总像素
C99或更新版本的编译器
优化lvgl运行效果的方法:
提高芯片主频(芯片主频越高,外设频率也越高,FMCS接口的频率也会越快)
增大SRAM容量(图形缓冲区是开在SRAM上的,SRAM的容量越大,那么图形刷新的区域越大,显示效果越流畅越好),提高读写速度
增大图形缓冲区,使用双缓冲
减小需要刷新的总像素
提高图像数据的传输速度(DMA2D?)
关键点:缩短图像刷新所需时间
LVGL资料获取:
GitHub链接:https://github.com/lvgl/lvgl
可以获取源码
LVGL库文件介绍
V8.2的库文件介绍:
移植LVGL需要保留的文件:example文件夹下的porting文件夹、src文件夹、lv_conf_template.h、lvgl.h
学习LVGL之前需要掌握的知识
知识点 |
要求 |
定时器 |
初始化、中断 |
屏幕 |
显示、触摸、DMA2D |
SRAM、内存管理 |
初始化、内存分配 |
文件系统、SD卡 |
初始化、读写 |
系统(FREERTOS) |
移植、创建任务、获取心跳 |
C 语言 |
指针、结构体 |
LVGL移植
LVGL移植关键点
显示、输入设备、系统、内存(内部SRAM或者外部SRAM、内存管理[算法])
显示是必须的,其他三个功能按需选择
LVGL移植整体流程
1、 确定输入输出设备
2、 确定所需的可选功能
3、 准备LVGL库、例程
4、 添加LVGL库到mdk工程
5、 配置输入输出设备
6、 为LVGL提供时基、测试代码是否移植成功