ESP32_esp-idf_lvgl_V8环境搭建移植

ESP32_LVGL7的环境搭建:ESP32_esp-idf_lvgl_V7环境搭建

先跑一跑官方用例,然后移植到自己的工程中(本次移植为LVGL_8.3,最新为LVGL9)

这个文档也是我一边移植一边记录的,所以有些繁琐

一,运行官方Demo。

Git方式下载lvgl针对esp32的官方移植仓库lv_port_esp32

注意:注意:注意:这里下载都不是最新版的LVGL而是7.11版本的。

git clone --recurse-submodules https://github.com/lvgl/lv_port_esp32.git

使用最新的LVGL,可以下载后再去下载最新的lvgl仓库,替换文件夹内的内容。

或者不要再使用本命令,直接clone本仓库然后去单个下载仓库

如果下载不了,可以分个单个git下载后(实在不行浏览器在页面上直接Download也可以,一般不会有问题),下载后再放到lv_port_esp32仓库指定的位置。

注意下载时别忘了选择最新的分支,LVGL仓库需要选择最新v8.3的分支,lv_esp32_drivers需要选择默认的master分支。

 lvgl分支需要选择8.3

Lv_esp32_drivers分支需要选择master

 不需要下载lv_examples文件夹内容,因为lvgl源码自带例程不需要再下载。

 下图这是最后需要用到的文件。

将下载的两个仓库解压放到lv_port_esp32文件夹的commponts文件夹的各个目录内。

删除lv_examples文件夹。

 使用Vscode打开lv_port_esp32文件夹

设置串口、下载方式后直接编译。

使用Vscode如果编译出错,可以更方便的找到问题。

 

如果不出意外,替换为最新的LVGL8.3之后会报错。

出错的过程可能不一样,有的错误在前面,有的在后面,可以朝后看是不是有相同错误。

 先解决第一个,在如下位置增加定义,以指明自己屏幕的分辨力。

 再次编译查看剩余的错误。

将上方出错位置的结构体名称改为lv_disp_draw_buf_t

将上方出错位置的函数名称改为lv_disp_draw_buf_init

再次编译,查看错误

 将上方错误的.buffer改为.draw_buf

再次编译,查看错误。

点击设置打开menuconfig窗口。无法进入发删除build文件夹,build编译后再进入。

这个按钮打开的设置和idf.py mrnuconfig打开的配置是一样的,如果不使用Vscode,直接使用ESP-IDF CMD打开,里面的设置和选项是一样的,两个都可以使用。

选择例程,之后运行这两个例程,同时防止文件内编译报错。

 

再次编译,查看错误

demo所在路径修改为如下路径

 

再次编译,查看错误

出现如上错误,说明你下载的lv_esp32_drivers仓库不是指定的仓库(不是master主分支仓库),下载的时候可以在线查看一下lv_esp32_drivers/lvgl_helpers.c的内容,应该为如下内容,否则不可以给V8使用。因为LVGL的目录结构变化,所以此文件也必须变化。

别忘了定义:#define LV_HOR_RES_MAX 240    #define LV_VER_RES_MAX 240

 

需要删除build,重新编译,查看错误

 添加定义或者直接注释,二选一。

 

眼看编译成功,又报错。我TM真的是服了 -_-!

添加文件夹

 

然后build又报错了 +_+

因为这个例程太大运行不了(可能有的模组可以运行),换一个例程。

 去掉勾选Show some widgets,只留一个。

修改main中的include路径。

等待编译完成。如果之前的ESP-IDF环境没有问题,这里编译大概率也不会再有问题了T_T

终于TMD成功了,不得不说后面依然还是会有问题 s_s

出现如下为成功。则可以进行配置LVGL了。

 

点击设置,设置lvgl的参数,需要按照自己的屏幕的驱动和显示方向配置。

下面是具体使用的引脚配置,可以根据自己具体使用的配置,并且需要参考ESP32引脚定义。

我建议使用SPI3来驱动,不然会和SD卡引脚冲突,如果增加功能会导致很多引脚问题。

我没有使用背光控制引脚和触摸控制引脚。

 没有背光控制引脚和触摸引脚。

 

点击编译,等待即可。Build一次时间还挺长 ~_~

 

 连接好线,点击下载

OK,那么问题又了。下载进去结果是这样子,颜色和显示都不对,T-T

 

 我以为是SPI的速度问题,我从40MHz一直降到5MHz,都不可以,每改一次,都要重新编译,1000多个文件,人都崩了。

最后把lvgl_8有关的初始化函数全部对照lvgl_7的代码,终于发现了盲点。另一个地方也有屏幕分辨力,修改后正常。

同时在设置中,勾选下图设置。

大概如果屏幕本身就是320*240的可能不会有这个问题。就只需要勾选设置里面的下图即可。

再次编译,终于没有问题了,T - T

下载后就可以看到运行了LVGL的Demo。

 

二,移植LVGL到自己现有的ESP-IDF工程中。

准备一个esp-idf的工程,路径无所谓,esp-idf的官方例程也可以。

然后将之前下载的LVGL中的components文件夹直接复制到ESP-IDF工程的主目录下。

 打开设置按照上面的运行Demo例程中的设置,一样设置即可。

把Demo例程中的main.c中的代码复制到ESP-IDF工程的main.c中,包括代码和头文件的包含都要挪过来。删除build文件夹,然后点击编译。

 

编译没有任何问题,直接下载,正常运行。

最后可以使用模拟器做好demo后,在挪进工程里面就行了。

个人见解,感谢阅读。

  • 8
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
根据引用所述,使用Vscode或ESP-IDF CMD打开的设置和配置是一样的,两种方法都可以使用。 根据引用所述,在进行esp-idf配置lvgl时,需要做以下几个步骤: 1. 打开lv_fs_fatfs.c文件(路径:lvgl/src/extra/libs/fsdrv/)。 2. 在第10行的位置添加sd_card.h头文件(#include "sd_card.h")。 3. 将第230行的两个DIR修改为FF_DIR。 4. 在第92行处的fs_init(void)函数中调用sd_init()函数来初始化sd卡。 这样就完成了esp-idf配置lvgl的过程。请注意,使用这种方式移植文件系统与使用lv_fs_if组件的方式不同。在调用lv_init()函数时,已经初始化了SD卡并且挂载了文件系统。因此,不需要更改main.c的任何内容,就可以实现初始化SD卡和文件系统。 如果出现错误,说明下载的lv_esp32_drivers仓库可能不是指定的仓库(不是master主分支仓库)。可以在线查看lv_esp32_drivers/lvgl_helpers.c的内容,确认是否符合要求。由于LVGL的目录结构变化,lvgl_helpers.c文件的内容也可能发生变化。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [ESP32_esp-idf_lvgl_V8环境搭建移植](https://blog.csdn.net/qq_43588817/article/details/126680595)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [ESP32ESP-IDF框架下为LVGL(v8.3)配置SD卡文件系统](https://blog.csdn.net/weixin_42181820/article/details/130199337)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值