使用ESP32开发LVGL

2023-10-27

基础概念

LVGL 在ESP32上使用版本差别是比较大的,主要有V7和V8的区别,具体应该是适配性以及一些比较高级的控件,相较而言感觉V7会更加稳定。在ESP32移植的话可以参考这个链接。但是其中也有一些小细节需要注意。

具体注意点

首先如果按照他的步骤走下去会卡在最后的编译上面,具体现象是会发现无法找到对应的demo文件。这个文件主要是演示的Demo

在此时就需要新建一些文件。如下图所示,具体会添加CMake文件以及Component以及 lv_ex_conf.h。其他的KConfig文件可以选择不添加。

 

针对每个文件我们需要添加的代码也是不一样的


对于CMake文件,我们需要告诉编译器

if(ESP_PLATFORM)



file(GLOB_RECURSE SOURCES lv_examples/*.c)



idf_component_register(SRCS ${SOURCES}

                        INCLUDE_DIRS .

                        REQUIRES lvgl)



endif()

对于Component.mk文件我们需要把路径下的每个文件夹包含完全

#

# Component Makefile

#



CFLAGS += -DLV_CONF_INCLUDE_SIMPLE



COMPONENT_SRCDIRS := lv_examples          \

    lv_examples/src/lv_demo_benchmark      \

    lv_examples/src/lv_demo_keypad_encoder \

    lv_examples/src/demo_stress            \

    lv_examples/src/lv_demo_widgets        \

    lv_examples/src/lv_ex_style            \

    lv_examples/src/lv_ex_widgets          \

    lv_examples/assets



COMPONENT_ADD_INCLUDEDIRS := $(COMPONENT_SRCDIRS) .

KConfig则是选择哪个Demo

# Kconfig for lv_examples v7.4.0



menu "lv_examples configuration"



    config LV_EX_PRINTF

        bool "Enable printf-ing data in demos and examples."

   

    choice LV_EX_CHOICE

        prompt "Select the demo you want to run."

        default LV_USE_DEMO_WIDGETS



        config LV_USE_DEMO_WIDGETS

            bool "Show demo widgets."



        config LV_DEMO_WIDGETS_SLIDESHOW

            bool "Slide demo widgets automatically."

            depends on LV_USE_DEMO_WIDGETS

            default y



        config LV_USE_DEMO_KEYPAD_AND_ENCODER

            bool "Demonstrate the usage of encoder and keyboard."



        config LV_USE_DEMO_BENCHMARK

            bool "Benchmark your system."



        config LV_USE_DEMO_STRESS

            bool "Stress test for LVGL."

    endchoice

endmenu

在conf文件则是最简单的配置文件

/**

 * @file lv_ex_conf.h

 * Configuration file for v7.4.0

 *

 */

/*

 * COPY THIS FILE AS lv_ex_conf.h

 */



#if 1 /*Set it to "1" to enable the content*/



#ifndef LV_EX_CONF_H

#define LV_EX_CONF_H





/*******************

 * GENERAL SETTING

 *******************/



/* Enable printf-ing data in demoes and examples */

#ifdef CONFIG_LV_EX_PRINTF

#define LV_EX_PRINTF       1

#else

#define LV_EX_PRINTF       0

#endif



#define LV_EX_KEYBOARD     0       /*Add PC keyboard support to some examples (`lv_drivers` repository is required)*/

#define LV_EX_MOUSEWHEEL   0       /*Add 'encoder' (mouse wheel) support to some examples (`lv_drivers` repository is required)*/



/*********************

 * DEMO USAGE

 *********************/



/*Show some widget*/

#ifdef CONFIG_LV_USE_DEMO_WIDGETS

#define LV_USE_DEMO_WIDGETS       1

#else

#define LV_USE_DEMO_WIDGETS       0

#endif



#if LV_USE_DEMO_WIDGETS

#ifdef CONFIG_LV_DEMO_WIDGETS_SLIDESHOW

#define LV_DEMO_WIDGETS_SLIDESHOW   1

#else

#define LV_DEMO_WIDGETS_SLIDESHOW   0

#endif

#endif



/*Printer demo, optimized for 800x480*/

#define LV_USE_DEMO_PRINTER     0



/*Demonstrate the usage of encoder and keyboard*/

#ifdef CONFIG_LV_USE_DEMO_KEYPAD_AND_ENCODER

#define LV_USE_DEMO_KEYPAD_AND_ENCODER  1

#else

#define LV_USE_DEMO_KEYPAD_AND_ENCODER  0

#endif



/*Benchmark your system*/

#ifdef CONFIG_LV_USE_DEMO_BENCHMARK

#define LV_USE_DEMO_BENCHMARK   1

#else

#define LV_USE_DEMO_BENCHMARK   0

#endif



/*Stress test for LVGL*/

#ifdef CONFIG_LV_USE_DEMO_STRESS

#define LV_USE_DEMO_STRESS  1 

#else

#define LV_USE_DEMO_STRESS  0 



#endif



#endif /*LV_EX_CONF_H*/



#endif /*End of "Content enable"*/




当然在最后的main文件夹下的CMake文件也需要注意,需要包含整个component中的组件。

set(SOURCES main.c)

idf_component_register(SRCS ${SOURCES}

                    INCLUDE_DIRS .

                    REQUIRES lvgl_esp32_drivers lvgl lv_examples)

 

target_compile_definitions(${COMPONENT_LIB} PRIVATE LV_CONF_INCLUDE_SIMPLE=1)

最重要的是lv_examples这个文件夹,需要注意在LVGL v8.0.0版本以及以上都采用的是lv_demo这个文件夹。在LVGL v7.x.x版本情况下才会是lv_examples。如果发现在Git上下载的是lv_demo需要看一下自己的LVGL版本号是否支持。

移植时需要注意的位置

如果出现花屏则需要考虑时钟速率。如果时钟速率过高或者过低都会导致花屏。

如果出现花屏需要检查是否没有选择此选项

Swap the 2 bytes of RGB565 color. Useful if the display has a 8 bit interface (e.g. SPI).

同时需要注意ESP32_S2选FSPI。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用ESP32开发LVGL 的相关文章

  • csu 1809 Parenthesis 2016湖南省赛 G

    Problem acm csu edu cn csuoj problemset problem pid 1809 vjudge net contest 161962 problem G Reference blog csdn net l95
  • spring之bean注入的意义

    简而言之就是 首先 service注解在当前类的上边 表示在当前类是spring管理的一个bean 使用 autowired 将另外一个A类的实体bean注入到当前类中 让当前类具备那个A类的功能
  • Android SDK & AVD Manager

    0 前言 Android源码中的prebuilts devtools tools android程序可根据不同的参数来启动SDK Manager或AVD Manager 1 SDK Manager 1 启动 android or andro
  • Chrome 基于 Wappalyzer 查看网站所用的前端技术栈

    1 找到谷歌商店 https chrome google com webstore search wappalyzer utm source ext app menu 2 搜索 Wappalyzer 3 添加至Chrome 4 使用 插件

随机推荐

  • MySQL的脏读、幻读、不可重复读

    首先我们要知道 我们的脏读 幻读 不可重复读这些概念是在事务中的概念 脏读 也就是读取了未提交的数据 比如我开启了一个事务A 在里面操作一个用户表 获取里面一个用户的积分 比如此时这个用户的积分是100 此时有另外一个事务B也操作了这个用户
  • LD3320语音识别

    芯片介绍 LD3320 不需要外接任何辅助的Flash芯片 RAM芯片和AD芯片 就可以完成语音识别功能 每次识别最多可以设置50项候选识别句 每个识别句可以是单字 词组或短句 另一方面 识别句内容可以动态编辑修改 只需要主控MCU把识别关
  • 碎碎念,浅浅饮-------Day30

    这不是一篇关乎技术的文章 它偏离了我原本的计划轨迹 但是 相信它的意义会远超出任何一项技术带给我的价值 高考已经开始了 不知道在这片宁静的夜空下有多少人已经美美的睡了 香甜憨然 又有多少人这睡着的眼角还挂着泪滴 偶尔蹙起眉头 却也记载不下那
  • 固态硬盘接口类型介绍

    固态硬盘接口类型介绍 现在装机硬盘肯定会首选SSD 容量小一点不怕 后面再补一个机械硬盘不迟 SSD有着稳固和高速的优势 深受用户喜爱 然而SSD有着各种各样的尺寸和接口 并不是每一个用户的电脑都能通用 所以选购SSD硬盘前必须先了解SSD
  • ajax请求出现闪屏,jquery $.Ajax 火狐浏览器闪屏解决办法

    本文章介绍了关于jquery的async false Ajax 火狐浏览器闪屏解决办法 jquery的async false 这个属性 默认是true 异步 false 同步 代码如下 复制代码 ajax type post url pat
  • vue2知识点梳理

    Vue梳理 对于Vue 我们并不陌生 现在我们来梳理一下关于它的东西吧 知识点 1 生命周期 最基本的就是它的生命周期 beforeCreate 在 beforeCreate 生命周期函数执行时 data 和 methods 中的数据都还没
  • Open3D (C++) 点云按坐标值大小进行排序

    目录 一 概述 二 点云排序 三 结果展示 一 概述 如题 点云按坐标大小进行排序 二 点云排序 代码以按照Z坐标的大小按照从小到大进行排序为例 include
  • java输出1~100之间的全部素数的5种方法

    文章目录 一 前言 二 需求分析 2 1 什么是素数 2 2 分析 三 代码实现 3 1 方法一 根据素数的定义来遍历检查 3 2 方法二 根据判断条件2进行遍历检查 减少遍历次数 3 3 方法三 根据判断条件3进行遍历检查 减少遍历次数
  • 达梦数据库调优组合索引的使用

    调优工程中对组合索引的使用的一个小总结 一 组合索引的执行计划 首先关于几个概念 等值条件和范围条件 1 等值条件 C1 X C1 X OR C1 Y 会被优化成C1 IN X Y C1 IN X Y 这种形式的我们都叫做等值条件 2 范围
  • Linux 安装Xrdp,实现RDP连接

    linux 安装xrdp RDP 连接 安装前提 root 权限 root server 76 conf yum install xrdp root 权限 安装 yum install xrdp Loaded plugins fastest
  • Eigen不同的方法来求矩阵的逆的效率

    背景 不同尺寸的矩阵 求逆使用不同的方法 会有不同的效率的 16x16矩阵的直接求逆与PartialPivLU的效率对比 本人亲测 1 实现代码 GetSystemTimeInMacroSecond的实现 boost posix time
  • 自适应卡尔曼滤波_【导师论坛】

    复杂噪声情况下的新型卡尔曼滤波器研究 主讲 黄玉龙 副教授 哈尔滨工程大学 时间 2019年1月17日 周四 14 30 16 30 地点 智能科学学院主楼401会议室 主讲人介绍 黄玉龙 博士 哈尔滨工程大学自动化学院副教授 2018年1
  • 远程代码执行漏洞的利用与防御

    什么是RCE漏洞 全称 remote command code execute 分为远程命令执行和远程代码执行 1 命令执行漏洞 直接调用操作系统命令 2 代码执行漏洞 靠执行脚本代码调用操作系统命令 一般出现这种漏洞 是因为应用系统从设计
  • 第十届蓝桥杯省赛Java B组 数的分解

    试题 D 数的分解 本题总分 10 分 问题描述 把 2019 分解成 3 个各不相同的正整数之和 并且要求每个正整数都不包 含数字 2 和 4 一共有多少种不同的分解方法 注意交换 3 个整数的顺序被视为同一种方法 例如 1000 100
  • mysql 数据恢复 binlog

    被删库勒索的一次记录 项目在云服务器运行了一年多了 中间迁移过一次 从阿里迁到华为了 迁移的时候把数据库文件 test sql 用完了之后就扔在了服务器上 最近访问系统的时候 忽然系统崩溃 表不存在了 数据库连接工具也连不上了 到服务器上的
  • torch.fx介绍

    Node Node类构造函数的各项参数如下 参考torch fx下的node py graph 指明实例化的Node属于哪个Graph op 节点的类型 一共有如下的几种类型 placeholder 占位符 一般代表输入 call meth
  • 【LeetCode刷题】169 多数元素

    给定一个大小为 n 的数组 找到其中的多数元素 多数元素是指在数组中出现次数 大于 n 2 的元素 你可以假设数组是非空的 并且给定的数组总是存在多数元素 方法一 HashMap 每个值初始value都为1 每重复一次 value 1 最后
  • 深度学习部署:Triton(Triton inference server)【旧称:TensorRT serving,专门针对TensorRT设计的服务器框架,后来变为Triton,支持其他推理后端】

    triton作为一个NVIDIA开源的商用级别的服务框架 个人认为很好用而且很稳定 API接口的变化也不大 我从2020年的20 06切换到2022年的22 06 两个大版本切换 一些涉及到代码的工程变动很少 稍微修改修改就可以直接复用 很
  • Java导出数据库查询结果为excel和csv的简易实现

    转载请注明来源 作者 loongshawn http blog csdn net loongshawn article details 53457953 建议读者阅读原文 确保获得完整的信息 1 背景 最近在应对一个数据查询导出模块 总体要
  • 使用ESP32开发LVGL

    基础概念 LVGL 在ESP32上使用版本差别是比较大的 主要有V7和V8的区别 具体应该是适配性以及一些比较高级的控件 相较而言感觉V7会更加稳定 在ESP32移植的话可以参考这个链接 但是其中也有一些小细节需要注意 具体注意点 首先如果