[ESP32]:移植LVGL8.2

环境:

  • esp-idf 4.4.4
  • esp32-s3

1.创建工程并编译

在这里插入图片描述

2.Clone LVGL仓库到工程目录下的components

$ git clone https://github.com/lvgl/lvgl.git components/lvgl
$ git clone https://github.com/lvgl/lvgl_esp32_drivers.git components/lvgl_esp32_drivers

在这里插入图片描述

3. 重新打开工程后进入设置界面

在这里插入图片描述
此时我们一进可以看到LVGL的设置相关内容
在这里插入图片描述
在这里插入图片描述

4.配置LVGL并尝试编译

本文所使用的驱动芯片为ILI9341,具体配置如下
在这里插入图片描述
在这里插入图片描述

保存后尝试编译

4.1 报错 SPI_HOST_MAX

在这里插入图片描述
打开lv_helper.h文件 添加如下内容

#define LV_HOR_RES_MAX 320
#define LV_VER_RES_MAX 240
#define SPI_HOST_MAX 3

在这里插入图片描述
此时,再次编译已通过,添加lvgl测试代码

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/event_groups.h"
#include "lvgl.h"
#include "freertos/semphr.h"
#include "esp_system.h"

#include "lvgl_helpers.h"

void lv_tick_task(void *arg)
{
    lv_tick_inc(1);
}
/* Creates a semaphore to handle concurrent call to lvgl stuff
 * If you wish to call *any* lvgl function from other threads/tasks
 * you should lock on the very same semaphore! */
/*********************** GUI_SHOW_CODE_START***********************/
lv_obj_t * label_1;
lv_obj_t * label_2;

void UI_Init()
{
    lv_obj_t *scr = lv_scr_act(); //创建scr
    lv_obj_set_pos(scr,0,0);
    lv_scr_load(scr);

    label_1 =lv_label_create(scr);//创建label
    lv_label_set_recolor(label_1,1);//颜色可变换
    lv_label_set_long_mode(label_1,LV_LABEL_LONG_SCROLL_CIRCULAR);//设置滚动模式
    lv_obj_set_pos(label_1,10,10);//设置位置
    lv_obj_set_size(label_1,160,30);//设定大小
    lv_label_set_text(label_1, "This is a GUI thread yes");//设定文本内容
 
    label_2 =lv_label_create(scr);//创建labe2
    lv_label_set_recolor(label_2,1);//颜色可变换
    lv_label_set_long_mode(label_2,LV_LABEL_LONG_SCROLL_CIRCULAR);//设置滚动模式
    lv_obj_set_pos(label_2,10,40);//设置位置
    lv_obj_set_size(label_2,160,40);//设定大小
    lv_label_set_text(label_2, "#ff0000 red#");//设定文本内容

}
/*********************** GUI_SHOW_CODE_END***********************/

void guiTask(void *p) 
{
    lv_init();
    /* Initialize SPI or I2C bus used by the drivers */
    lvgl_driver_init();
    lv_color_t *buf1 = heap_caps_malloc(DISP_BUF_SIZE * sizeof(lv_color_t), MALLOC_CAP_DMA);
    assert(buf1 != NULL);
    static lv_color_t *buf2 = NULL;

    static lv_disp_draw_buf_t disp_buf;

    uint32_t size_in_px = DISP_BUF_SIZE;
    lv_disp_draw_buf_init(&disp_buf, buf1, buf2, size_in_px);
    lv_disp_drv_t disp_drv;
    lv_disp_drv_init(&disp_drv);
    disp_drv.hor_res = LV_HOR_RES_MAX;
    disp_drv.ver_res = LV_VER_RES_MAX;
    disp_drv.flush_cb = disp_driver_flush;
    disp_drv.draw_buf = &disp_buf;
    lv_disp_drv_register(&disp_drv);

    const esp_timer_create_args_t periodic_timer_args = {
        .callback = &lv_tick_task,
        .name = "periodic_gui"};
    esp_timer_handle_t periodic_timer;
    ESP_ERROR_CHECK(esp_timer_create(&periodic_timer_args, &periodic_timer));
    ESP_ERROR_CHECK(esp_timer_start_periodic(periodic_timer, 1 * 1000));

    // lvgl UI代码
    UI_Init();
    // ui代码结束
    while (1)
    {
        /* Delay 1 tick (assumes FreeRTOS tick is 10ms */
        vTaskDelay(pdMS_TO_TICKS(10));
        lv_task_handler();
    }

}

void app_main(void)
{
    xTaskCreate(guiTask,"gui",4096*2,NULL,1,NULL);
    //xTaskCreatePinnedToCore(guiTask, "gui", 4096*2, NULL, 1, NULL, 1);
}

4.2 报错 SPI_BUS

在这里插入图片描述
修改如下
在这里插入图片描述

可以看到已经正常显示

4.3 如果显示颜色异常

勾选SWAP
在这里插入图片描述

测试结果如下
在这里插入图片描述

浅尝一下官方出的设计器

在这里插入图片描述

一些其他的注意点

如果中间更换了芯片,设置需要全部在点一遍,以免错误。

最后本文工程的仓库连接如下
https://gitee.com/LINKEEE/esp32-lvgl8.2

  • 8
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
要下载ESP32 LVGL 8.2,首先需要进入官方网站(www.lvgl.io)并找到ESP32 LVGL库的下载页面。然后,可以在该页面上找到与ESP32兼容的LVGL版本。确保选择8.2版本。 一旦找到正确的版本,就可以下载ESP32 LVGL 8.2库的ZIP文件。点击下载按钮后,文件将被保存到计算机本地的指定位置。 下载完成后,解压缩ZIP文件,并将解压缩后的文件夹重命名为“ESP32 LVGL 8.2”或其他有意义的名称。 现在,打开Arduino IDE(如果尚未安装,请先安装)。在Arduino IDE中,打开“文件”菜单,然后选择“首选项”。在首选项对话框中,复制并粘贴以下链接到“附加开发板管理器网址”中: https://dl.espressif.com/dl/package_esp32_index.json 保存设置并关闭对话框。接下来,打开“工具”菜单,然后选择“开发板”下的“开发板管理器”选项。 在开发板管理器中,使用搜索栏查找并安装“esp32”开发板支持。找到“esp32 by Espressif Systems”并点击“安装”按钮。 安装完成后,选择“工具”菜单下的“开发板”选项,在开发板列表中找到“ESP32 Dev Module”并选择。 现在,打开“文件”菜单,然后选择“示例”,在下拉菜单中找到“ESP32 LVGL 8.2”文件夹。可以在这个文件夹中找到不同的示例。 选择要运行的示例,并点击“上传”按钮。此时,编译和上传过程将开始。 如果一切正常,示例将成功上传到ESP32开发板上,并且在串行监视器中可以看到示例运行的输出。 这样,我们就完成了ESP32 LVGL 8.2的下载和运行。现在可以开始使用这个强大的图形库来开发各种精美的用户界面了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值