相关文章
快速入门ESP32——开发环境配置Arduino IDE
快速入门ESP32——开发环境配置PlatformIO IDE
快速入门ESP32—— platformIO添加开源库和自己的开发库
快速入门ESP32—— 解决platformIO添加开源库下载失败的问题
快速入门ESP32——点亮你的第一个LCD屏幕



前言

 在上一期我们移植了TFT_eSPI库成功点亮了LCD,本期就教大家怎么在platform上移植LVGL。 温馨提醒:请确保你的LCD能正常使用快速入门ESP32——点亮你的第一个LCD屏幕
 我的硬件是:ESP32S3+1.69LCD(无触摸),


一、下载LVGL库

  • 下载
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

二、修改配置

1、修改lv_conf.h配置

  • 将lv_conf_template.h文件要重命名为lv_conf.h
    在这里插入图片描述
  • 使能 v_conf.h文件
    在这里插入图片描述
  • 使能获取ESP32内部时钟,这样就不用单独提供心跳包了。(PS:在stm32中我们是通过定时器中断来提供心跳)
    在这里插入图片描述
  • 使能demo例程(在后面我们要使用到这个demo来测试)
    在这里插入图片描述

2、移动demo文件

  • 在platform中不会直接识别得到demo文件中的路径。所以我们需要将demo文件移动到src文件中
    在这里插入图片描述

3、修改LVGL Arduino 例程

  • 将arduino.ino文件全部复制到main,cpp中
    在这里插入图片描述
    在这里插入图片描述
  • 我们不能自己用这个例程,需要做一下修改

修改后main.cpp


#include <lvgl.h>
#include <TFT_eSPI.h>
#include "demos/lv_demos.h"


static const uint16_t screenWidth  = 240;//屏幕分辨率
static const uint16_t screenHeight = 280;

static lv_disp_draw_buf_t draw_buf;
static lv_color_t buf[ screenWidth * screenHeight ];

TFT_eSPI tft = TFT_eSPI(screenWidth, screenHeight); /* TFT instance */

/* Display flushing */
void my_disp_flush( lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p )
{
    uint32_t w = ( area->x2 - area->x1 + 1 );
    uint32_t h = ( area->y2 - area->y1 + 1 );

    tft.startWrite();
    tft.setAddrWindow( area->x1, area->y1, w, h );
    tft.pushColors( ( uint16_t * )&color_p->full, w * h, true );
    tft.endWrite();

    lv_disp_flush_ready( disp_drv );
}

void setup()
{
    Serial.begin( 115200 ); /* prepare for possible serial debug */
    Serial.println( "I am LVGL_Arduino" );

    lv_init();
    tft.begin();          /* TFT init */
    tft.setRotation( 3 ); /* Landscape orientation, flipped */

    lv_disp_draw_buf_init( &draw_buf, buf, NULL, screenWidth * screenHeight );
    /*Initialize the display*/
    static lv_disp_drv_t disp_drv;
    lv_disp_drv_init( &disp_drv );
    /*Change the following line to your display resolution*/
    disp_drv.hor_res = screenHeight;
    disp_drv.ver_res = screenWidth;
    disp_drv.flush_cb = my_disp_flush;
    disp_drv.draw_buf = &draw_buf;
    lv_disp_drv_register( &disp_drv );

    lv_demo_benchmark();          // OK

    Serial.println( "Setup done" );
}

void loop()
{
    lv_timer_handler(); /* let the GUI do its work */
    delay( 5 );
}


三、下载验证

  • 将程序下载到我们开发板中,查看效果
    在这里插入图片描述

四、错误修改指南

  • 要是下载到开发板中,屏幕没有一点反应。请确认移植TFT_eSPI后屏幕是否能正常显示
  • 下载若是花屏,查看分辨率是否设置正常还有缓存空间开辟是否太小
    在这里插入图片描述
    在这里插入图片描述

快速入门ESP32——移植LVGL(保姆级教程)

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐