LVGL——(1)初识

目录

一、什么是LVGL?

二、为什么叫LVGL?

三、LVGL的主要特性

四、LVGL的配置要求

五、LVGL仓库布局

六、LVGL的用途

七、在STM32上运行LVGL

1、用Windows PC模拟器(Code::Block)运行LVGL

2、STM32F103运行LVGL


前言:最近想学习嵌入式GUI界面,于是跟着韦东山老师学习LVGL相应课程,此节专栏围绕LVGL展开编写,都是学习韦东山老师课程中的心得体会以及总结,希望各位大佬支持!

一、什么是LVGL?

LVGL是由Gábor Kiss-Vámosi于2016年创建的一个开源项目,目前由来自世界各地的志愿者共同维护和开发。LVGL是用C语言编写的,遵循MIT协议,可以自由地使用和修改。LVGL支持多种操作系统,例如Linux、Windows、RTOS等,也可以在开发板上运行。LVGL还支持多种显示器驱动器和触摸屏驱动器,可以与不同大小和分辨率的显示器兼容。LVGL还提供了多种语言的绑定,例如Python、Micropython、JavaScript等,以及多种开发工具,例如模拟器、视觉化设计器、字体转换器等。  

当时叫 LittlevGL而不是LVGL,后来作者重新命名为 LVGL,甚至连仓库地址都改了。 像一般的开源项目的那样,它是作为一个人的项目开始的。 从那时起,陆续有近 100 名贡献者参与了项目开发,使得 LVGL 逐渐成为最受欢迎的嵌入式图形库之一。

二、为什么叫LVGL?

只要我们打开lvgl的官网,我们马上就能看到这句话:Light and Versatile Graphics Library。

这句话的意思就是:轻便且多功能的图形库 (轻量级通用型图形库)

而它们的首字母就组成了LVGL:Light and Versatile Graphics Library

三、LVGL的主要特性

  • 强大的构建块,例如按钮、图表、列表、滑块、图像等。

  • 带有动画、抗锯齿、不透明度、平滑滚动的高级图形

  • 各种输入设备,如触摸板、鼠标、键盘、编码器等。

  • 多语言支持 UTF-8 编码

  • 多显示器支持,即同时使用多个 TFT、单色显示器

  • 具有类似 CSS 样式的完全可定制的图形元素

  • 独立于硬件:与任何微控制器或显示器一起使用

  • 可扩展:能够以很少的内存运行(64 kB Flash,16 kB RAM)

  • 支持但不要求操作系统、外部存储器和 GPU

  • 即使具有高级图形效果,也可进行单帧缓冲区操作

  • 用 C 编写以获得最大的兼容性(C++ 兼容)

  • 在没有嵌入式硬件的 PC 上启动嵌入式 GUI 设计的模拟器

  • 绑定到 MicroPython

  • 快速 GUI 设计的教程、示例、主题

  • 文档可在线获取并以 PDF 格式提供

  • 在 MIT 许可下免费和开源

四、LVGL的配置要求

基本上,每个能够驱动显示器的现代控制器都适合运行 LVGL。 最低要求是:

  • 16、32 或 64 位微控制器或处理器
  • 建议使用 >16 MHz 时钟速度
  • 闪存/ROM: > 64 kB 用于非常重要的组件 (> 建议使用 180 kB)
  • RAM:
    • 静态 RAM 使用量:~2 kB,取决于使用的功能和对象类型
    • 堆: > 2kB (> 建议使用 8 kB)
    • 动态数据(堆): > 2 KB (> 如果使用多个对象,建议使用 16 kB). 在 lv_conf.h 文件中配置 LV_MEM_SIZE 生效。
    • 显示缓冲区:> “水平分辨率”像素(推荐 >10 × 10ד 水平分辨率”
    • MCU或外部显示控制器中的一个帧缓冲区
  • C99 或更新的编译器
  • 具备基本的 C(或 C++)知识: pointersstructscallbacks

请注意,内存使用量可能因架构、编译器和构建选项而异。

五、LVGL仓库布局

LVGL 项目的所有代码仓库都托管在 GitHub上:LVGL · GitHub

可以从下面的列表获取到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_... 移植到其他平台

六、LVGL的用途

LVGL可以用于各种嵌入式系统的GUI开发,例如:

- 智能手机和平板电脑:LVGL可以用于创建类似于Android或iOS的GUI,提供多点触控、手势识别、动画效果等功能。

- 智能手表和穿戴设备:LVGL可以用于创建适合小型显示器的GUI,提供圆形或方形的控件、低功耗模式、健康监测等功能。

- 汽车仪表盘和导航系统:LVGL可以用于创建适合汽车环境的GUI,提供高对比度、高亮度、反射式或透明式的显示器、触摸屏或按键操作、车载信息和娱乐等功能。

- 工业控制和测量仪器:LVGL可以用于创建适合工业场景的GUI,提供坚固耐用、防水防尘、高温高压、抗干扰等特性,以及数据显示和控制等功能。

- 家庭电器和物联网设备:LVGL可以用于创建适合家庭使用的GUI,提供简洁美观、易于操作、节能省电等特点,以及远程控制和智能连接等功能。

七、在STM32上运行LVGL

在STM32上使用LVGL需要一些步骤:

配置开发环境:首先,需要配置STM32开发环境,包括安装相应的工具链和IDE。

安装LVGL库:下载LVGL库并将其集成到您的项目中。您可以从LVGL官方网站或GitHub仓库获取最新版本。

创建LVGL应用:编写您的STM32应用程序,并在其中使用LVGL库来创建用户界面。

初始化和事件处理:初始化LVGL库,并设置事件处理程序来处理用户交互。

编译和烧录:编译您的应用程序,并将其烧录到STM32微控制器中。

测试和调试:在目标设备上测试您的LVGL应用程序,并进行必要的调试和优化。

1、用Windows PC模拟器(Code::Block)运行LVGL

打开安装压缩包并安装Code::Block

找到项目模板中的lvgl.cbp用Code::Block打开项目

若直接运行可能会出错,则需要修改正确的工具链

运行结果

2、STM32F103运行LVGL

找到程序源码打开keil5编译并烧录

运行结果

  • 32
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值