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 文件

​ 编译运行

​ 查看效果

相关推荐
一隅论数智5 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
XiHongShi20165 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
爱吃苹果的日记本6 天前
离散数学第六课
学习·离散数学
AI职业加油站6 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
深圳老胡6 天前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
旖旎夜光6 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
奇思妙想聪明勤奋的小羊6 天前
DeepAgents第5章:子Agent 与上下文隔离—让 Agent学会委派
人工智能·python·学习·语言模型
Because_of_Her16 天前
并查集-听课笔记
笔记·算法·并查集
霍霍的袁6 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio