LVGL学习笔记(一)

LVGL学习笔记(一)

使用windows+Visual Studio进行环境搭建

前言

在实际开发中,常常会遇到一个使用显示屏或者触摸屏显示的需求,然后将功能开发完成后给项目经理看,常常会被吐槽界面设计太丑。为了解决这个问题,使用LVGL进行显示优化就显得很有必要了。而之所以选择LVGL,是因为LVGL它能在STM32F103这类仅 64KB RAM 的小内存芯片上跑出媲美高端设备的流畅界面。接下来就让我们一起开始对LVGL相关知识的学习吧。

  • 什么是LVGL?它的主要特点是什么?

    LVGL(Light and Versatile Graphics Library)是一个免费的轻量级开源图形库。

    其主要有如下特点:

    1,丰富的部件:开关、按钮、图表、列表、滑块、图片,等等。

    2,高级图形属性:具有动画、抗锯齿、不透明度、平滑滚动等高级图形属性。

    3,支持多种输入设备:如触摸屏、鼠标、键盘、编码器等。

    4,支持多语言:UTF-8 编码。

    5,支持多显示器:它可以同时使用多个 TFT 或者单色显示器。

    6,支持多种样式属性:它具有类 CSS 的样式,支持自定义图形元素。

    7,独立于硬件之外:它可以与任何微控制器或显示器一起使用。

    8,可扩展性:它能够以小内存运行(最低 64 KB 闪存,16 KB RAM 的 MCU)。

    9,支持操作系统、外部存储器和 GPU(不是必需的)。

    10,具有高级图形效果:可进行单帧缓冲区操作。

    11, 纯 C 编写: LVGL 基于 C 语言编写,以获得最大的兼容性。

  • LVGL的初始化流程是怎么样的?请简要描述。

    LVGL 初始化流程分为以下几个步骤:

    1.调用lv_init()函数,初始化LVGL图形库,注册显示设备和输入设备。

    2.调用lv_port_disp_init()函数和 lv_port_indev_init()函数。

    3.为LVGL提供时基。用户可以使用定时器,在其中断里面定时调用 lv_tick_inc() 函数,为LVGL提供时基。如果工程中带有操作系统,则可以使用相应的时钟函数来为LVGL提供时基。

    4.定时处理LVGL任务。用户需要每隔几毫秒调用一次 lv_timer_handler()函数,以处理LVGL相关的任务,该函数可以放在 while 循环中,但延时不宜过大,需要确保 5 毫秒以内。

    后面的笔记中会分别对每个步骤进行具体的讲解,这里只是先有个影响就好。

  • LVGL的开发环境如何进行搭建?使用模拟器开发有什么好处?

    PC 模拟器的好处有两个,分别如下:

    1.在没有实际硬件的时候也可以学习,降低了学习LVGL的门槛。

    2.在实际设计界面的过程中减少了烧录代码的次数,延长了开发板主控芯片的使用寿命。

    接下来使用Visual Studio在windows系统上搭建LVGL模拟器的开发环境。步骤如下:

    1.安装Visual Studio

    官网下载地址:https://visualstudio.microsoft.com/zh-hans/vs/

    选择2019社区版,安装即可。

    下载好 visual studio ,安装即可,然后打开 installer ,确认安装 C++ 环境。

    2.下载模拟器工程

    LVGL 的 VisualStudio 模拟器工程的获取方式主要有两种:一种是使用git clone下载工程;另一种是git直接下载压缩包,这里推荐使用后一种方法。(默认已经安装 git 环境)

    方法一:git clone下载工程

    git 获取克隆地址:https://github.com/lvgl/lv_port_win_visual_studio.git

    国内镜像地址:mirrors / lvgl / lv_port_win_visual_studio · GitCode

    复制代码
     git clone --recursive https://github.com/lvgl/lv_port_win_visual_studio.git

    如果遇到 OpenSSL SSL_read: Connection was reset, errno 10054 问题,使用如下命令,解除 SSL认证。

    复制代码
    git config --global http.sslVerify "false"

    进入代码根目录,使用git 下载子模块。

    复制代码
    cd xxxfile
    git submodule update --init --recursive

    方法二:git 压缩包下载

    在官网下载lvgl 模拟器压缩包:https://github.com/lvgl/lv_port_win_visual_studio

    解压工程,在下载 子目录 "freetype"、"lv_drivers"、"lvgl" 子模块代码

​ 3.模拟仿真

​ 打开 LVGL.Simulator.sln 文件

​ 编译运行

​ 查看效果

相关推荐
mifengxing5 分钟前
操作系统 文件系统
笔记·操作系统·计算机408
学运维的Kysan1 小时前
暑假运维学习打卡第二十六天8.17
学习
无聊的菜鸟1 小时前
TMS320F2806X学习笔记(零)—— C2000、CCS、新建工程
笔记·mcu·c2000·f2806x
dear_bi_MyOnly2 小时前
AI人工智能分类识别——机器如何学习
人工智能·学习·分类
ljt27249606612 小时前
Compose笔记(八十三)--onVisibilityChanged
笔记
启雀AI4 小时前
培训平台移动端离线学习方案设计与实现:视频缓存、断点续传与进度同步的工程实践
android·学习·缓存·音视频·企业lms
Fa_Mian_Tuan6 小时前
图论基础|邻接矩阵超详细讲解(含无向/有向/带权图+完整可运行C语言代码)
c语言·数据结构·笔记·算法·图论
Bruce_Liuxiaowei6 小时前
从零到可运行:基于 Vue3 + FastAPI + DeepSeek-V3 的 AI 英语单词学习系统全栈实战
人工智能·python·学习·fastapi·全栈·智能体
zhangrelay7 小时前
ROS 2 Lyrical 第9章 计算机视觉与摄像头应用
linux·笔记·学习·ubuntu·机器人·ros2
FakeOccupational7 小时前
【电路笔记 STM32】stm32f103 实现HAL_UART_Transmit_DMA + 普通模式/连续模式的 UART DMA 收发
笔记·stm32·嵌入式硬件