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组成及相关知识

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




      若编译出现如下图错误,可根据图中所示进行解决:

      我个人在实验过程中编译该程序出现了一个switch case选项的宏未定义。可尝试将该选项部分代码隐去,再次编译运行,并不影响最终结果,因为我们主要测试软件安装是否成功,以及观察运行LVGL程序的效果。

      最终成功运行的效果:

    参考阅读

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

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

    物联沃分享整理
    物联沃-IOTWORD物联网 » LVGL:基于 v8.1-8.2 版本的介绍

    发表评论