目录 一、LVGL起源 二、LVGL组成及相关知识 1、主要特性 2、lvgl开发介绍 3、LVGL在git的仓库布局 三、运行LVGL的硬件需求 1、参数要求 2、显示 3、输入设备 4、绘图功能 5、文本功能 6、图像功能 7、风格 四、windows PC模拟器(codeblocks)运行LVGL 1、什么是codeblocks? 2、代码测试 参考阅读 一、LVGL起源 LVGL(Light and Versatile Graphics Library)是一个轻量级的嵌入式图形库。LVGL的项目作者是来自匈牙利首都布达佩斯的 Gábor Kiss-Vámosi 。Kiss 在2016年将其发布在 GitHub上。
当时叫 LittlevGL而不是LVGL,后来作者重新命名为 LVGL,甚至连仓库地址都改了。 像一般的开源项目的那样,它是作为一个人的项目开始的。 从那时起,陆续有近 100 名贡献者参与了项目开发,使得 LVGL 逐渐成为最受欢迎的嵌入式图形库之一。LVGL 项目(包括所有存储库)在 MIT license 许可下获得许可。这意味着您甚至可以在商业项目中使用它。这不是强制性的。
它提供了创建嵌入式 GUI 所需的一切,具有易于使用的图形元素,美丽的视觉效果和低内存占用。
官网地址:https://lvgl.io/
LVGL为我们提供一个详细的英文文档手册,这个文档的在线阅读站点是: https://docs.lvgl.io,下面还有个中文版的
百问网LVGL中文站点:http://lvgl.100ask.net,选择相应的版本v8.1
github地址:https://github.com/lvgl
二、LVGL组成及相关知识 1、主要特性 • 丰富且强大的模块化图形组件:按钮 (buttons)、图表 (charts)、列表 (lists)、 滑动条 (sliders)、图片 (images)等 • 高级的图形引擎:动画、抗锯齿、透明度、平滑滚动、图层混合等效果 • 支持多种输入设备:触摸屏、键盘、编码器、按键等 • 支持多显示设备 • 不依赖特定的硬件平台,可以在任何显示屏上运行 • 配置可裁剪(最低资源占用:64 kB Flash,16 kB RAM) • 基于 UTF-8 的多语种支持,例如中文、日文、韩文、阿拉伯文等 • 可以通过类 CSS的方式来设计、布局图形界面(例如:Flexbox、Grid) • 支持操作系统、外置内存、以及硬件加速(LVGL 已内建支持 STM32 DMA2D、NXP PXP 和 VGLite) • 即便仅有单缓冲区 (frame buffer)的情况下,也可保证渲染如丝般顺滑 • 全部由 C 编写完成,并支持 C++ 调用 • 支持 Micropython 编程,参见:LVGL API in Micropython • 在线模拟器,支持ESP32
2、lvgl开发介绍 • 支持模拟器仿真,可以无硬件依托进行开发 • 丰富详实的例程 • 详尽的文档以及 API 参考手册,可线上查阅或可下载为 PDF 格式 • 在 MIT 许可下免费和开源 • 基本上,每个能够驱动显示器的现代控制器都适合运行 LVGL。
3、LVGL在git的仓库布局 LVGL 项目的所有代码仓库都托管在 GitHub 上:https://github.com/lvgl 您可以从下面的列表获取到 lvgl 所有相关的代码仓库: • lvgl 库本身有很多 例子。 • lv_demos 使用 LVGL 创建的演示。 • lv_drivers 显示和输入设备驱动程序 • 博客 博客站点的来源 (https://blog.lvgl.io) • sim 在线模拟器网站的来源 (https://sim.lvgl.io) • lv_sim_... 各种 IDE 和平台的模拟器项目 • lv_port_... LVGL 端口到开发板 • lv_binding_.. 绑定到其他语言 • lv_... 移植到其他平台
该项目的维护: • 错误修复:每周按需发布 • 次要版本:每 3-4 个月 • 主要版本:大约每年
三、运行LVGL的硬件需求 1、参数要求 16、32 或 64 位微控制器或处理器
建议使用 16 MHz 速度或者更高
闪存/只读存储器:> 64 kB (建议使用 180 kB)
内存:8 kB(建议使用 24 kB)
1 帧缓冲器:在 MCU、外部 RAM 或显示控制器中
LVGL 的图形缓冲区:>“水平分辨率”像素(建议使用 1/10“屏幕尺寸”)
C99 或更高版本的编译器
基本 C(或C++)知识:指针、结构、回调
2、显示 任何分辨率:从小型单色显示器到全高清显示器
简单的界面:一个驱动程序功能即可将渲染的图像复制到显示器
图形处理器支持
多显示器支持
自定义颜色格式支持
灵活的缓冲模式,可实现高质量、高性能和低内存使用率
3、输入设备 同一屏幕的多个输入设备
简单的接口:一个驱动程序功能即可获取输入设备的状态
拖动、滚动对象
识别手势
键盘和编码器支持无触摸板导航
4、绘图功能 抗锯齿
带半径的矩形
带半径的边框
影子
线:
弧:
多边形
掩蔽
5、文本功能 支持 UTF-8
抗锯齿
字距调整
自动换行和自动文本滚动
双向文本支持(混合 RTL 和 LTR)
阿拉伯语和波斯语支持
字体压缩
子像素渲染
在线和离线字体转换器
自定义字体引擎的界面
FreeType 集成示例
多语言支持
6、图像功能 各种颜色格式:RGB、ARGB、色度键控、索引、仅 Alpha
实时对图像进行重新着色
实时缩放和旋转
图像可以放在闪存或文件中(例如SD卡)
在线和离线图像转换器
用于缓存的图像解码器
PNG 集成示例 7、风格 设置微件外观
级联样式(如 CSS 中所示)
在多个小部件中重复使用这些样式
用于简单更改的本地样式
用于提供默认外观的主题
状态更改时的过渡(动画)
要运行LVGL,您只需要一个C编译器,32kB RAM和128 kB闪存,一个帧缓冲区以及至少一个用于渲染的1/10屏幕大小的缓冲区。
四、windows PC模拟器(codeblocks)运行LVGL 1、什么是codeblocks? Code::Blocks 是一个开放源码的全功能的跨平台C/C++集成开发环境。Code::Blocks是开放源码软件。Code::Blocks由纯粹的C++语言开发完成,它使用了著名的图形界面库wxWidgets(3.x)版。对于追求完美的C++程序员,再也不必忍受Eclipse的缓慢。
阅读参考:Code::Blocks_百度百科,其他更多相关资料请自行百度搜索学习,这里不再赘述。
2、代码测试 相关资料链接: 链接:https://pan.baidu.com/s/10fqCw72zTfnj-2iTWFgpTg 提取码:sfh7
若编译出现如下图错误,可根据图中所示进行解决:
我个人在实验过程中编译该程序出现了一个switch case选项的宏未定义。可尝试将该选项部分代码隐去,再次编译运行,并不影响最终结果,因为我们主要测试软件安装是否成功,以及观察运行LVGL程序的效果。
最终成功运行的效果: