LVGL简介(基于v8.1-8.2)

目录

  • 一、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简介(基于v8.1-8.2)_第1张图片

二、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、参数要求

163264 位微控制器或处理器

建议使用 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 
--来自百度网盘超级会员V6的分享

LVGL简介(基于v8.1-8.2)_第2张图片
LVGL简介(基于v8.1-8.2)_第3张图片
LVGL简介(基于v8.1-8.2)_第4张图片
  若编译出现如下图错误,可根据图中所示进行解决:
LVGL简介(基于v8.1-8.2)_第5张图片
  我个人在实验过程中编译该程序出现了一个switch case选项的宏未定义。可尝试将该选项部分代码隐去,再次编译运行,并不影响最终结果,因为我们主要测试软件安装是否成功,以及观察运行LVGL程序的效果。
LVGL简介(基于v8.1-8.2)_第6张图片
  最终成功运行的效果:
LVGL简介(基于v8.1-8.2)_第7张图片

参考阅读

开源轻量级显示框架LVGL简介

本专栏文章参考了《百问网LVGL(v8)系列课程(韦东山·监制) 基于lvgl v8.2版本》、知乎、百度百科以及其他技术博客等资料,并结合自己的所学整理而来。如有侵权,请联系删除!水平有限,欢迎各位在评论区交流讨论!

你可能感兴趣的:(开源轻量级显示框架LVGL,嵌入式Linux小项目,单片机,嵌入式硬件,arm,linux,LVGL)