学习笔记ESP32——lvgl disp移植(1)

这篇具有很好参考价值的文章主要介绍了学习笔记ESP32——lvgl disp移植(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、简介

二、GitHub上下载lvgl库

        1、下载lvgl库

三、准备一个工程

 四、修改工程

 五、对disp进行修改

​编辑

六、主函数的修改

七、硬件的修改

八、MUSIC示例演示

一、简介

        以esp32 idf导出的hello world例程,移植lvgl disp和indev驱动的学习笔记。

二、GitHub上下载lvgl库

        1、下载lvgl库

                如果进不去GitHub记得开vpn。

esp32+lvgl,学习,笔记

 我这里使用的是8.3版本的lvgl,所以下载该版本 

esp32+lvgl,学习,笔记复制路径之后,在搜索栏粘贴,下载zip压缩包

esp32+lvgl,学习,笔记

解压到一个文件夹里

三、准备一个工程

导出一个hello world工程(前面的文章有讲),把lvgl和lvgl_driver放入component文件夹里,把lvgl和lvgl_driver文件名字后面的去掉

esp32+lvgl,学习,笔记

 四、修改工程

导入lvgl和driver后,先编译一下,修改报错

esp32+lvgl,学习,笔记

 定位到lv_helpers.c文件

    assert((0 <= host) && (SPI_HOST_MAX > host));
    const char *spi_names[] = {
        "SPI1_HOST", "SPI2_HOST", "SPI3_HOST"
    };

 把上面的报错的地方用下面的替换

#if defined(CONFIG_IDF_TARGET_ESP32)
    assert((SPI_HOST <= host) && (VSPI_HOST >= host));
    const char *spi_names[] = {
        "SPI_HOST", "HSPI_HOST", "VSPI_HOST"};

    dma_channel = SPI_DMA_CH_AUTO;
#elif defined(CONFIG_IDF_TARGET_ESP32S2)
    assert((SPI_HOST <= host) && (HSPI_HOST >= host));
    const char *spi_names[] = {
        "SPI_HOST", "", ""};

    dma_channel = SPI_DMA_CH_AUTO;
#elif defined(CONFIG_IDF_TARGET_ESP32C3)
    assert((SPI1_HOST <= host) && (SPI3_HOST >= host));
    const char *spi_names[] = {
        "SPI1_HOST", "SPI2_HOST", "SPI3_HOST"};

    dma_channel = SPI_DMA_CH_AUTO; /* SPI_DMA_CH_AUTO */;
#elif defined(CONFIG_IDF_TARGET_ESP32S3)
    assert((SPI1_HOST <= host) && (SPI3_HOST >= host));
    const char *spi_names[] = {
        "SPI_HOST", "HSPI_HOST", "VSPI_HOST"};
    dma_channel = SPI_DMA_CH_AUTO;
#else
#error "Target chip not selected"
#endif

继续编译

esp32+lvgl,学习,笔记

 这里是没有定义LV_HOR_RES_MAX,定义一下,放在前面。

#ifndef LV_HOR_RES_MAX
#define LV_HOR_RES_MAX (320)
#endif
#ifndef LV_VER_RES_MAX
#define LV_VER_RES_MAX (240)
#endif

继续编译,编译通过

esp32+lvgl,学习,笔记

 把lvgl→example→porting里的disp.c和.h文件复制,在component文件夹下新建一个文件夹lvgl_porting,把上面两个文件放在里面,此外还需要一个CMakeList文件和component.mk文件(之前的CMakeList简单使用文章里有讲),这里我直接放进去,把文件后面的template删掉,并修改CMakeList文件

esp32+lvgl,学习,笔记

 esp32+lvgl,学习,笔记

 五、对disp进行修改

把两个文件的0 改成 1 ,对名字进行修改temp去掉

esp32+lvgl,学习,笔记

这里的define我们已经定义过,所以删除即可

esp32+lvgl,学习,笔记

 缓存方式选择双缓存,并且用lvgl_helper里帮我们定义好的替换

esp32+lvgl,学习,笔记

 继续修改,替换成定义好的,记得把原来的刷屏方式disp_flush 函数注释掉

esp32+lvgl,学习,笔记

 在屏幕初始化函数里加上自己的初始化函数esp32+lvgl,学习,笔记

 因为在disp函数里调用了lvgl和lvgl_esp32_drivers里的函数,所以还要修改CMakeList

esp32+lvgl,学习,笔记

 删除build重新编译一下,编译通过,这里disp_flush函数的声明忘记注释了,所以有一个警告

esp32+lvgl,学习,笔记

六、主函数的修改

添加头文件、初始化函数和一个简单的心跳 

esp32+lvgl,学习,笔记

 在前面添加一个定时器任务

//用定时器给LVGL提供时钟
static void lv_tick_task(void *arg)
{
    (void)arg;
    lv_tick_inc(10);
}

 在主函数里创建一个定时器并回调

    /* 创建一个10ms定时器*/ // 定期处理GUI回调
   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, 10 * 1000));

七、硬件的修改

点击左下角的小齿轮,进入设置

esp32+lvgl,学习,笔记

 根据自己的板子修改lvgl esp drivers

esp32+lvgl,学习,笔记

 我这里用的ST7789屏幕,勾选SPI clock frequency, 我的板子支持80MHz,一般选择40M即可

esp32+lvgl,学习,笔记

 根据自己的板子所接的引脚修改,我这里没有接背光,所以Not Used

esp32+lvgl,学习,笔记

 触屏现在还没用到,不过先配置好

esp32+lvgl,学习,笔记

 点击保存,重新编译。

八、MUSIC示例演示

 现在屏幕是没有现象的,下面用music实例眼演示一下

在设置里勾上Music,保存

esp32+lvgl,学习,笔记

主函数添加头文件lv_demos.h,编译出现字体报错

esp32+lvgl,学习,笔记

 在设置里把12和16字体勾选上,保存

esp32+lvgl,学习,笔记

 修改完成后编译,下载,可以正常显示,但是颜色不对,勾选上,即可正常显示

esp32+lvgl,学习,笔记

esp32+lvgl,学习,笔记文章来源地址https://www.toymoban.com/news/detail-793101.html

到了这里,关于学习笔记ESP32——lvgl disp移植(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ESP32+LVGL】1.69寸ST7789+CST816触摸屏之Vscode+platformio开发例程搭建移植

    ESP32开发板(本文以乐鑫系列ESP32-WROOM-32U为例,基本espressif系列的ESP32都行) ST7789+CST816驱动的触摸屏(这里以中景园1.69寸240*280的触摸屏为例) Vscode+platformio插件 触摸屏转接板(最好有,比较方便接线,直接连线问题应该也不大) 在Vscode下,使用platformio插件新建一个工程项

    2024年02月03日
    浏览(80)
  • LVGL学习笔记(二):从0到1移植LVGL8.1到STM32平台上(完结篇)

    目录 一:TFT-LCD屏触摸 二:STM32CubeMX配置 三:FT5206触摸芯片驱动代码移植 四:LVGL 移植 4.1 源码下载 4.2 代码移植  4.3 添加源码至工程 4.4 指定头文件路径 4.5 设置编译参数  4.6 修改LVGL源文件   4.7 修改显示驱动接口    4.8 修改输入设备驱动接口  五:下载验证  六:工

    2024年02月03日
    浏览(49)
  • ESP32在ESP-IDF框架下使用LVGL(v8.3)

    VSCode + ESP-IDF 插件 说明: IDF版本为4.4.4 ,最新版的5.0.1弃用了些东西,而lvgl_esp32_drivers对5以上的版本未适配,所以 不建议使用5以上的版本 。 安装:安装教程,建议整体看完在进行安装,以免安装失败, 教程安装的是5.0.1,需要改为4.4.4 。 Arduino移植教程:点击此处 lvgl :g

    2023年04月16日
    浏览(70)
  • 【esp32&lvgl】-2.6 #lvgl-多页面(screen)设定/切换

    目录 一、前言 二、实现原理 2.1 各个screen的定义及初始化 2.2 各个screen内的内容绘制 2.3 页面切换的events_handler 三、代码实现 3.1 PageManage库 3.2 Page_mainMenu库(界面) 3.3 Page_wifi库(界面) 参考文献         利用lvgl框架绘制GUI免不了需要实现多个页面的切换,毕竟把所有功

    2024年02月02日
    浏览(48)
  • ESP32 ESP-IDF + LVGL + SquareLine Studio 设计 UI 界面

    陈拓 2022/12/10-2022/12/12 关于SquareLine Studio,乐鑫官方的ESP技术文章有介绍: 在 ESP 开发板上开发 UI 不再复杂 - 知乎 如果您尝试过在没有图形库的情况下开发 UI,那么您一定知道这有多困难。幸运的是,由乐鑫芯片驱动的屏幕,可支持用户使用多种图形库来开发 UI, LVGL 就是其

    2024年01月19日
    浏览(62)
  • esp32+lvgl--桌面多功能天气时钟

    功能: 1、通过网络获取日期、时间以及当地天气温度 2、有模拟时钟、背景切换、语言切换等功能 esp32+lvgl桌面时钟天气 一、准备材料 esp32开发板、1.28寸圆屏幕(非触摸)。 二、软件开发过程 1、获取网络天气和时间。 esp32自带2.4gwifi功能。使用wifi功能需包含头文件WiFi.h,

    2024年02月02日
    浏览(57)
  • 【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】

    关于本教程: 1.ESP32简介                                                                 2.ESP32 Arduino 集成开发环境 3.VS 代码和 PlatformIO 4.ESP32 引脚 5.ESP32 输入输出 6.ESP32 脉宽调制 7.ESP32 模拟输入 8.ESP32 中断定时器 9 .ESP32 深度睡眠 1.ESP32 网络服

    2024年02月04日
    浏览(58)
  • 【ESP32最全学习笔记(基础篇)——4.ESP32 引脚介绍】

    关于本教程: 1.ESP32简介                                                                 2.ESP32 Arduino 集成开发环境 3.VS 代码和 PlatformIO 4.ESP32 引脚 ☑  5.ESP32 输入输出 6.ESP32 脉宽调制 7.ESP32 模拟输入 8.ESP32 中断定时器 9.ESP32 深度睡眠 ESP32 网络

    2024年02月03日
    浏览(50)
  • 【ESP32最全学习笔记(基础篇)——9.ESP32 深度睡眠模式】

    关于本教程: 1.ESP32简介                                                                 2.ESP32 Arduino 集成开发环境 3.VS 代码和 PlatformIO 4.ESP32 引脚 5.ESP32 输入输出 6.ESP32 脉宽调制 7.ESP32 模拟输入 8.ESP32 中断定时器 9.ESP32 深度睡眠 ☑

    2024年02月05日
    浏览(66)
  • 视频图像处理算法opencv在esp32及esp32s3上面的移植,也可以移植openmv

    opencv 在 esp32 及 esp32s3 上面的移植 Opencv 简介       OpenCV 是一个基于 Apache2.0 许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在 Linux 、 Windows 、 Android 和 Mac OS 操作系统上,它轻量级而且高效—— 由一系列 C 函数和少量 C++ 类构成,同时提供了 Python 、 R

    2024年02月09日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包