LVGL开发入门教程

描述

第12章 LVGL开发入门

12.1 LVGL开发简介

12.1.1 LVGL介绍

LVGL(Light and Versatile Graphics Library)是一个开源的嵌入式图形库,由Gábor Kiss-Vámosi于2016年创建,遵守MIT协议。目前由来自世界各地的志愿者共同维护和开发。

LVGL

LVGL具有轻量级、多功能、灵活和可移植等特点,可以帮助开发者快速和方便地创建美观和功能丰富的GUI。LVGL适用于各种嵌入式平台,并且支持多种操作系统,例如Linux、Windows、RTOS等,可运行于多种硬件板卡上。LVGL还支持多种不同分辨率的显示器、多种接口的触摸屏。LVGL还提供了多种语言的绑定,例如Python、Micropython、JavaScript等,并提供多种开发工具,例如模拟器、视觉化设计器、字体转换器等。

LVGL支持多种控件:圆弧、动画图像、进度条、按钮、按钮矩阵、日历、图表、画布、复选框、下拉列表、图象、图像按钮、键盘、标签、线条、菜单、消息框、滚轮、标尺、滑动条、跨度、旋转框、旋转器、开关、表、文本框、平铺视图、窗口等。使用LVGL可以制作风格多样的界面,比如:

12.1.2 LVGL内部机制

使用LVGL创建出各个图标并在屏幕上显示之后,以按钮图标为例,它如何及时地响应用户的点击操作?以温湿度图标为例,如何及时地更新它的数据?LVGL使用“timer”来实现。

操作图标时,要先点击触摸屏。我们会为触摸屏创建一个输入设备(“lv_indev_t”),并为它创建一个timer,通过这个timer周期性地读取鼠标的输入数据。以“packagesLVGL-v8.3.11 estssrclv_test_init.c”为例,注册鼠标设备时,内部注册了一个timer:

开源

LVGL的主循环会周期性地调用上述的“lv_indev_read_timer_cb”函数,它里面将调用“lv_test_mouse_read_cb”得到鼠标数据,然后发送给被选中的图标。

假设有图标被用来显示温湿度值,我们也会为这个图标添加一个timer,通过这个timer周期性地读取温湿度值并更新图标。比如:

开源

LVGL的主循环会周期性地调用上述的“label_speed_timer”函数,它里面将读取温湿度传感器的数值,并更新“label_speed”的文字。

这些定时器都是在LVGL的主循环里被调用的,主循环如何得到这些定时器?它们都被放入一个链表里:

开源

怎么处理_lv_timer_ll链表里的各个timer?LVGL里有一个循环,代码如下:

开源

12.2 开发第1个LVGL程序

本节课程演示如何编译、运行第1个LVGL程序。

12.2.1 下载源码

这些源码可以在网盘资料中看到,你可以不必自己下载:

开源

RemiPi上运行的是Linux系统,支持的显示设备是基于Framebuffer的。所以,可以从LVGL官网下载“lv_port_linux_frame_buffer”:它是基于Linux的、支持Framebuffer的示例程序。

如下图所示下载v9.0版本:

开源

在“lv_port_linux_frame_buffer”里,含有编译工具、LVGL 的源码链接(“如上图步骤4所示,就是LVGL源码链接”)。“lv_port_linux_frame_buffer”里,“lvgl”子目录是空的,我们需要下载LVGL v9.1的源码放到“lvgl”目录里(LVGL9.0有些问题)。点击上图步骤4的“lvgl”,如下图操作:

开源

把“lv_port_linux_frame_buffer-release-v9.0.zip”、“lvgl-9.1.0.zip”分别解压后,得到“lv_port_linux_frame_buffer-release-v9.0”、“lvgl-9.1.0”,把后者目录下的所有文件复 制进“lv_port_linux_frame_buffer-release-v9.0/lvgl”目录下。

在Ubuntu下可以执行以下命令解压:

左右滑动查看完整内容

 

$ unzip lv_port_linux_frame_buffer-release-v9.0.zip
$ unzip lvgl-9.1.0.zip
$ mv lvgl-9.1.0/* lv_port_linux_frame_buffer-release-v9.0/lvgl/

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分