【LVGL应用开发--基于STM32】第1章 初识LVGL


前言

在实际应用中,我们时常需要制作 UI 界面来实现人机交互,简单的 UI 可以直接编写代码,但对于那些复杂的交互界面,自己编写 UI 界面可能就力不从心了。因此可使用第三方的 GUI库来设计 UI界面,例如 LVGL、emWin、QT等图形用户库,它们都可以设计漂亮的 UI界面。本章主要是认识和了解LVGL图形用户界面,本章分为如下几部分内容:
1.1 LVGL简介
1.2 LVGL移植要求
1.3 LVGL源码下载与介绍


1.1 LVGL简介

LVGL(Light and Versatile Graphics Library)是一个免费的开源图形库,提供创建具有易于使用的图形元素、漂亮的视觉效果和低内存占用的嵌入式 GUI。接下来我们来看一下 LVGL图形用户库的主要特征有哪些:

  1. 强大的构建块:按钮、图表、列表、滑块、图像等部件。
  2. 具有高级图形属性:具有动画、抗锯齿、不透明度、平滑滚动的高级图形。
  3. 支持各种输入设备:如触摸、鼠标、键盘、编码器。
  4. 支持多语言:UTF-8 编码。
  5. 支持多显示器:它可以同时使用多个 TFT 或者单色显示器。
  6. 支持多种样式属性:它具有类 CSS 样式的完全可定制的图形元素。
  7. 独立于硬件之外:它与任何微控制器或显示器一起使用。
  8. 可扩展性:它能够以小内存运行(最低 64 kB 闪存,16 kB RAM 的 MCU)。
  9. 支持操作系统、外部存储器和 GPU(不是必需的)。
  10. 具有高级图形效果:可进行单帧缓冲区操作。
  11. 纯 C 编写: C语言编写以获得最大的兼容性。
    从上述特征可知:LVGL 是一款具有丰富的部件,具备高级图形特性,支持多种输入设备,多国语言和独立于硬件之外等免费的开源图形库。LVGL 官方地址为:https://lvgl.io/,该网页主要包含用户文档以及图片和字体转换器,该网页打开后如下图所示:
    在这里插入图片描述

上图中左下角的“Github”图标可点击进入下载 LVGL相关源码的网页;上图中左下角的“Docs”图标可点击进入 LVGL用户文档,该文档是纯英文编写的,主要讲解 LVGL移植方式和各个部件的使用;上图右上角的“Tools”选项主要提供用户图片和字库在线转换器,这些转换器是以某种规则把目标文件转换成嵌入式可读取的文件。
点击上图中左下角的“Docs”图标进入 LVGL 在线用户文档,该文档是为了用户能快速上手LVGL 图形库并且它还提供了初学者学习的源码和资料,该在线用户文档网页如下所示:
在这里插入图片描述

从上图可知:LVGL的在线文档教程是英文文档,如果读者对英文很了解,笔者建议看官方的在线教程;如果读者对英文很敏感,则笔者建议看本教程的内容,因为本教程是根据LVGL 在线教程翻译而编写的,它能让读者快速掌握 LVGL 下图形用户界面的开发与使用。在以后的章节中,笔者重点讲解上图的 Widgets 和 3rd party libraries 章节的内容,这些内容占据了 LVGL的70%内容,所以笔者希望读者能掌握这些内容。


1.2 LVGL移植要求

在市面上具有众多的 MCU 微处理器,这些处理器并不是每一个都适合移植 LVGL 图形库,如传统的 51单片机等微处理器,它们并不具备 LVGL 图形库的移植条件,因为 LVGL图形库无论对 MCU还是 LCD 显示屏都是具备相应的要求才能移植,下面我们分别地讲解它们的硬件要求有哪些。
(1)MCU的要求
LVGL图形库移植对 MCU是有要求的,每一个能够驱动显示器的 MCU 是否能运行 LVGL图形库,取决于 MCU 是否具备 LVGL 的最低移植需求。该最低移植需求如下图所示:
在这里插入图片描述

从上图可知:微处理器至少是 16 位以上的,显然有些微处理器并不满足这个最低移植需求,如宏晶科技 STC89Cxx和高性能 HCS08系列等处理器,它们都是 8位微处理器单元。接下来,笔者以STM32F103ZET6开发板来对比是否满足 LVGL 最低移植需求。STM32开发板的主控 MCU 是 32 位微处理器单元,它的主频率为72MHz,内嵌 Flash 为512KB 以及内嵌 SRAM 为 64KB 等资源信息,这些资源信息比图中的LVGL 最低移植要求是远远大于的,所以STM32F103ZET6开发板可移植 LVGL 图形库。
(2)显示屏的要求
LVGL只需要一个简单的驱动程序函数即可将像素阵列复制到显示器的给定区域中,这就是 LVGL 调用显示驱动绘画原理,下面笔者来讲解一下 LVGL 对显示屏的需求有哪些,如下所示:
① 具有 8/16/24/32 位色深的显示屏。
② HDMI 端口的显示器。
③ 小型单色显示器。
④ 灰度显示。
⑤ LED矩阵。
⑥ 其它可以控制像素颜色/状态的显示器。
从上述要求可知:开发板可搭配的TFTLCD模块或 RGBLCD模块都是 16 位深的显示屏,这些显示屏可满足 LVGL 的最低显示屏的要求。


1.3 LVGL源码下载与介绍

前面笔者讲解到,LVGL 相关的源码和工程都是存放在 GitHub 远程仓库中,该 GitHub 远程仓库地址为 https://github.com/lvgl/lvgl/,读者可以在浏览器打开并下载 LVGL 图形库最新版本源码。由于 GitHub 服务器是在国外的,所以在国内访问该服务器,可能登录不成功,我们可以在开发板资料目录下获取 LVGL 图形库的源码,该获取路径为:“\4–实验程序\4–GUI人机实验\LVGL实验\LVGL源码及工具”,如下图所示:
在这里插入图片描述

上图的“LVGL使用工具”文件夹保存的是 LVGL 相关的离线的转换工具,这些离线工具是广大博主根据 LVGL的字库和图片的处理特性编写的软件,而 lvgl-maser.zip 压缩包是 LVGL图形库的源码,接下来笔者分别地介绍 lvgl-maser.zip 压缩包下的相关文件,首先我们解压图中的lvgl-master.zip 压缩包,解压后的 lvgl-master 文件夹下的内容如下图所示:
在这里插入图片描述

在上图中,我们会发现 lvgl-master 目录下有很多文件和文件夹,这些文件和文件夹并不需要用户全部都要了解的,这里我们了解与移植相关的文件和文件夹即可。LVGL 移植所需要的文件夹和文件有 examples文件夹、src文件夹、lv_conf_template.h和 lvgl.h文件,其他的文件与移植无关。下面我们分别介绍上图的重要文件和文件夹如下所示:
在这里插入图片描述

对于上述的文件夹,建议读者了解 examples 文件夹和 src 文件夹下的内容即可,其他文件夹与移植无关,接下来我们分别地讲解这两个文件夹的文件结构如下所示:
(1)examples文件夹
该文件夹主要包含 LVGL 部件实例、动画实例、其他第三方库实例以及输入设备和显示器驱动文件,如下所示:
在这里插入图片描述

上图的 porting 文件夹和移植相关的,其他的文件夹是提供用户学习的实例。
(2)src文件夹
该文件夹主要包含 LVGL 源文件(部件源码、多种解码库),如下所示:
在这里插入图片描述

在以后的学习中,我们重点讲解上表的 widgets 和 extra 文件夹下的文件内的接口使用。

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值