又一次移植最新lvgl8到esp32的踩坑记录
上一次移植了lvgl8到esp32后,发现用别人的仓库里面的lvgl并不是最新的版本,没有集成gif组件,为了使用gif播放,同时也自己尝试走一遍从0开始的移植过程。 之前移植的记录看这里
一、创建工程
1、在vscode新建esp32工程
在vscode中,按ctrl+shift+p键打开命令面板,输入搜索“show examples projects”,点击ESP-IDF:展示示例项目,选择你所用的esp-idf版本后,将打开esp-idf的例程创建界面。我这里esp-idf的版本是4.3.2。然后随便选个最简单的hello_world作为创建模板就可以了
2、添加lvgl最新版本的相关仓库代码
打开上一步创建的hello_world目录,新建一个“components”目录
然后将lvgl和lvgl_esp32_drivers两个仓库的最新代码clone到components目录内
https://github.com/lvgl/lvgl
https://github.com/lvgl/lvgl_esp32_drivers
现在的工程目录结构应该是这样的

3、创建lv_conf.h
在lvgl的目录下,有一个lv_conf_template.h的模板头文件,将其复制到同目录内,重命名为lv_conf.h。然后将里面最开始的“#if 0”改为“#if 1”使其生效,其它的都不用动了。在后面的menucofig后,相关的配置会作用里面的各种宏定义。
4、修改main.c
这里直接贴代码
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/semphr.h"
#include "esp_log.h"
#include "esp_system.h"
#include "esp_freertos_hooks.h"
#include "../components/lvgl/lvgl.h"
#include "lvgl_helpers.h"
/*-----------------函数声明-----------------------------------*/
void lvgl_test(void);
/*-----------------------------------------------------------*/
/* LVGL 移植部分 */
static void lv_tick_task(void *arg)
{
(void)arg;
lv_tick_inc(portTICK_PERIOD_MS);
}
SemaphoreHandle_t xGuiSemaphore;
/* UI 任务 */
static void gui_task(void *arg)
{
xGuiSemaphore = xSemaphoreCreateMutex();
lv_init(); //lvgl内核初始化
lvgl_driver_init(); //lvgl显示接口初始化
static lv_disp_

本文记录了将LVGL8最新版移植到ESP32过程中遇到的问题及解决方法,包括创建工程、添加仓库代码、创建配置文件、修改main.c,以及在移植过程中遇到的SPI主机未定义、显示缓冲区大小错误等编译问题的解决步骤。
最低0.47元/天 解锁文章
5191

被折叠的 条评论
为什么被折叠?



