目录
1、用Windows PC模拟器(Code::Block)运行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++)知识: pointers, structs, callbacks
请注意,内存使用量可能因架构、编译器和构建选项而异。
五、LVGL仓库布局
LVGL 项目的所有代码仓库都托管在 GitHub上:LVGL · GitHub
可以从下面的列表获取到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编译并烧录
运行结果