相关文章
快速入门ESP32——开发环境配置Arduino IDE
快速入门ESP32——开发环境配置PlatformIO IDE
快速入门ESP32—— platformIO添加开源库和自己的开发库
快速入门ESP32—— 解决platformIO添加开源库下载失败的问题
快速入门ESP32——点亮你的第一个LCD屏幕
快速入门ESP32——移植LVGL(8.3.6)
- 前言
- 一、下载LVGL库
- 二、修改配置
- 1、修改lv_conf.h配置
- 2、移动demo文件
- 3、修改LVGL Arduino 例程
- 三、下载验证
- 四、错误修改指南
前言
在上一期我们移植了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(保姆级教程)