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

相关文章
快速入门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


MagicBox超多功能桌面小电视固件 基于esp32-arduino LVGL的天气时钟、相册、桌面投屏、软路由信息显示、bilibili粉丝等.zip嵌入式优质项目,资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目。 本人单片机开发经验充足,深耕嵌入式领域,有任何使用问题欢迎随时与我联系,我会及时为你解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明,项目具体内容可查看下方的资源详情。 【附带帮助】: 若还需要嵌入式物联网单片机相关领域开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步。 【本人专注嵌入式领域】: 有任何使用问题欢迎随时与我联系,我会及时解答,第一时间为你提供帮助,优快云博客端可私信,为你解惑,欢迎交流。 【建议小白】: 在所有嵌入式开发中硬件部分若不会画PCB/电路,可选择根据引脚定义将其代替为面包板+杜邦线+外设模块的方式,只需轻松简单连线,下载源码烧录进去便可轻松复刻出一样的项目 【适合场景】: 相关项目设计中,皆可应用在项目开发、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面中 可借鉴此优质项目实现复刻,也可以基于此项目进行扩展来开发出更多功能
### ESP32LVGL框架的结合使用 ESP32 是一款功能强大的微控制器,支持 Wi-Fi 和蓝牙通信。LVGL(Light and Versatile Graphics Library)是一个轻量的图形库,专为嵌入式系统设计,能够提供丰富的用户界面功能[^5]。将 ESP32LVGL 结合使用,可以开发出具有复杂图形界面的应用程序。 #### 硬件与软件准备 在开始之前,需要确保以下硬件和软件环境已经准备好: 1. **硬件**:ESP32 开发板、TFT 显示屏(如 ILI9341 或 ST7789)、触摸屏(可选)。 2. **软件**:安装最新版本的 ESP-IDF(Espressif IoT Development Framework),这是 ESP32 的官方开发框架。同时需要配置 LVGL 库以适配 ESP32。 #### 配置步骤 以下是配置 ESP32LVGL 的基本步骤: 1. **安装 ESP-IDF**: - 下载并安装 [ESP-IDF](https://github.com/espressif/esp-idf)。 - 配置工具链和环境变量。 2. **集成 LVGL**: - 下载 [LVGL](https://github.com/lvgl/lvgl) 源代码。 - 将 LVGL 文件夹复制到 ESP-IDF 项目目录中。 3. **初始化显示驱动**: - 根据 TFT 显示屏的类型,选择合适的驱动程序(如 ILI9341 或 ST7789)。 - 在 ESP-IDF 中初始化显示驱动,并配置 SPI 或 I2C 接口。 4. **初始化触摸屏(可选)**: - 如果使用触摸屏,需要配置相应的驱动程序(如 XPT2046)。 - 初始化触摸屏并与 LVGL 集成。 #### 示例代码 以下是一个简单的示例代码,展示如何在 ESP32 上初始化 LVGL 并创建一个按钮: ```c #include "lvgl/lvgl.h" #include "driver/gpio.h" void lvgl_init() { // 初始化 LVGL lv_init(); // 创建一个屏幕缓冲区 static lv_disp_buf_t disp_buf; static lv_color_t buf[LV_HOR_RES_MAX * LV_VER_RES_MAX]; lv_disp_buf_init(&disp_buf, buf, NULL, LV_HOR_RES_MAX * LV_VER_RES_MAX); // 初始化显示器 lv_disp_drv_t disp_drv; lv_disp_drv_init(&disp_drv); disp_drv.flush_cb = my_display_flush; // 替换为实际的显示刷新函数 disp_drv.buffer = &disp_buf; lv_disp_drv_register(&disp_drv); // 初始化输入设备(可选) lv_indev_drv_t indev_drv; lv_indev_drv_init(&indev_drv); indev_drv.type = LV_INDEV_TYPE_POINTER; indev_drv.read_cb = my_touch_read; // 替换为实际的触摸读取函数 lv_indev_drv_register(&indev_drv); } void create_button() { // 创建一个按钮 lv_obj_t *btn = lv_btn_create(lv_scr_act()); lv_obj_set_size(btn, 100, 50); lv_obj_align(btn, LV_ALIGN_CENTER, 0, 0); // 添加标签到按钮 lv_obj_t *label = lv_label_create(btn); lv_label_set_text(label, "Hello"); } void app_main() { lvgl_init(); create_button(); } ``` #### 常见问题与解决方案 1. **显示异常**:检查显示屏的硬件连接是否正确,确保 SPI 或 I2C 配置无误。 2. **触摸屏不响应**:确认触摸屏驱动程序是否正确初始化,并检查校准参数。 3. **内存不足**:优化 LVGL 的配置文件 `lv_conf.h`,减少不必要的功能以节省内存。 ###
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值