• 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后,在挪进工程里面就行了。

    个人见解,感谢阅读。

  • 相关阅读:
    推荐一款基于业务行为驱动开发(BDD)测试框架:Cucumber!
    1012 数字分类【PAT (Basic Level) Practice (中文)】
    巨细!【python爬虫实战案例】
    机器学习之 Jupyter Notebook 使用
    栈和队列2——队列的实现
    【深基13.例1】查找
    JavaScript处理数组数据-数据匹配-剔除
    vue3使用flv播放视频监控
    SpringBoot 玩一玩代码混淆,防止反编译代码泄露!
    算法学习笔记
  • 原文地址:https://blog.csdn.net/qq_43588817/article/details/126680595