T-Dongle-S3开发笔记——移植LVGL

添加lvgl组件 

idf.py add-dependency lvgl/lvgl>=8.*

新建终端执行命令后出现了新的文件:

清除再编译后才会出现lvgl库

优化为本地组件

以上方式修改了组件文件内容重新编译后文件又会变回去。

所以我们要把lvgl变成本地组件

1、要把 idf_component.yml 文件删除

2、把managed_components\lvgl__lvgl命名更改为components/lvgl

3、项目路径下的CMakeLists.txt添加components\lvgl路径

4、进入menuconfig配置lvgl ,取消选中“Uncheck this to use custom lv_conf.h”。以lv_conf.h进行配置

添加lvgl_esp32_drivers

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

根目录CMakeLists.txt添加:

set(EXTRA_COMPONENT_DIRS 
"components/lvgl" 
"components/lvgl_esp32_drivers"
)

报错1:

IDF 5.0 及以上版本中 driver 已经不再作为 IDF 项目的基础组件,要使用这些非基础组件必须在 IDF 项目组件的 CMakeLists.txt 文件内明确指出。

解决方法:lvgl_esp32_drivers组件下的CMakeLists.txt添加driver

idf_component_register(SRCS ${SOURCES}
                       INCLUDE_DIRS ${LVGL_INCLUDE_DIRS}
                       REQUIRES lvgl driver)

报错2 

bit_num 改为 duty_resolution

报错3

myproject/components/lvgl_esp32_drivers/lvgl_tft/esp_lcd_backlight.c:67:43: error: 'SIG_GPIO_OUT_IDX' undeclared (first use in this function)

添加头文件

#include <soc/gpio_sig_map.h>

报错4

implicit declaration of function 'gpio_matrix_out'; did you mean 'gpio_iomux_out'? [-Werror=implicit-function-declaration]

添加头文件 (vscode上的提示功能还不行,报错3可以提示)

#include <rom/gpio.h>

报错5

error: 'LV_HOR_RES_MAX' undeclared (first use in this function); 
did you mean 'LV_HOR_RES'?

lvgl_helpers.h添加定义

#define LV_HOR_RES_MAX  160
#define LV_HOR_RES_MAX  80

报错6

/myproject/components/lvgl_esp32_drivers/lvgl_tft/st7735s.c:101:9: error: implicit declaration of function 'gpio_pad_select_gpi 
'; did you mean 'esp_rom_gpio_pad_select_gpio'? [-Werror=implicit-function-declaration]

disp_spi.h 添加头文件

#include <rom/gpio.h>

报错7

myproject/components/lvgl_esp32_drivers/lvgl_tft/st7735s.c:110:26: error: 'portTICK_RATE_MS' undeclared (first use in this function); did you mean 'portTICK_PERIOD_MS'?

portTICK_RATE_MS 全部换成 portTICK_PERIOD_MS

相关配置

引脚配置

参考例程

// Display (ST7735s) hardware configuration:
#define DISPLAY_RST      1
#define DISPLAY_DC       2
#define DISPLAY_MOSI     3
#define DISPLAY_CS       4
#define DISPLAY_SCLK     5
#define DISPLAY_LEDA    38
#define DISPLAY_MISO    -1
#define DISPLAY_BUSY    -1
#define DISPLAY_WIDTH  160
#define DISPLAY_HEIGHT  80

Color settings

Memory settings

显示帧率

配置demo

屏幕方向

运行测试

测试代码

main.c

#include <stdio.h>
#include "esp_log.h"
#include "esp_system.h"
#include "freertos/FreeRTOS.h"
#include "freertos/event_groups.h"
#include "lvgl.h"
#include "lvgl_helpers.h"
 
#include "demos/lv_demos.h"
#include <esp_timer.h>
 
 
#define TAG "main"
 
 
void lv_tick_task(void *arg)
{
    lv_tick_inc(1);
}
 
void app_main(void)
{
    
    /* Initialize SPI or I2C bus used by the drivers */
    lvgl_driver_init();
 
    lv_init();
    /*Create a LED and switch it OFF*/
    //lv_obj_t * led1  = lv_led_create(lv_scr_act());
    //lv_obj_align(led1, NULL, LV_ALIGN_CENTER, -80);
    // lv_led_off(led1);

    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 demo演示
    lv_demo_widgets();
    // lv_demo_stress();
   
    while (1)
    {
        /* Delay 1 tick (assumes FreeRTOS tick is 10ms */
        vTaskDelay(pdMS_TO_TICKS(10));
        lv_task_handler();
    }
 
 
}

运行报错

运行后不断重启报错

E (418) spi: spi_bus_initialize(764): invalid dma channel, chip only support spi dma channel auto-alloc

lvgl_helpers.c修改:

运行效果

T-Dongle-S3开发笔记-移植LVGL资源-CSDN文库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/402730.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python】遇到的一些小问题及解决办法汇总

【工具】&#xff1a;pycharm 【环境】&#xff1a;Windows 一、数据集路径导入报错 【错误提示】&#xff1a; SyntaxError: (unicode error) ‘unicodeescape’ codec can’t decode bytes in position 2-3: truncated \UXXXXXXXX escape 如图&#xff1a; 【原因分析】&a…

visual studio2022使用tensorRT配置

只记录tensorRT在vs中使用时的配置&#xff0c;下载和安装的 文章主页自己寻找。 下载好TensorRT和对应的cuda之后&#xff0c;把tensorRT的锻炼了和lib文件复制粘贴到cuda对应的文件夹中&#xff0c;以方便调用。 完成之后打开vs新建一个tensorRT的项目&#xff0c;然后开始配…

文件上传漏洞--Upload-labs--Pass20--数组绕过

一、漏洞原理 漏洞来源&#xff1a;count()函数漏洞。 现自定义一个数组 arr[]&#xff0c;定义arr[0]1,arr[3]2, 此时count(arr)的值为2&#xff0c;则arr[count[arr]]即为arr[2]&#xff0c;但是arr[2]未定义&#xff0c;即为一个空值&#xff0c;若使用count()函数的本意是…

Windows10和Ubuntu22.04双系统安装

概要&#xff1a; 本篇演示Windows10和Ubuntu22.04双系统的安装&#xff0c;先安装Windows10&#xff0c;再安装Ubuntu22.04。 先安装Ubuntu22.04&#xff0c;后安装Windows10见&#xff1a; Ubuntu22.04和Windows10双系统安装-CSDN博客 一、说明 1、电脑 笔者的电脑品牌…

PhpStorm 2023:卓越的代码质量,无与伦比的调试体验 mac/win版

JetBrains PhpStorm 2023是一款针对PHP开发者的强大集成开发环境(IDE)&#xff0c;它提供了丰富的功能和工具&#xff0c;帮助开发者更高效地编写、调试和测试PHP应用程序。 PhpStorm 2023 软件获取 首先&#xff0c;JetBrains PhpStorm 2023具备强大的代码编辑功能&#xff0…

SAP STO VLPOD 报错 QA495 XXX 的问题

原因&#xff1a; 质检物料在中生成采购订单的时候的质检状态不对 PS物料是否需要质检在质量视图里面的

高级语言期末2015级唐班B卷

1.编写函数&#xff0c;按照如下公式计算圆周率π的值&#xff08;精确到1e-5&#xff09; #include <stdio.h>double pai() {double last0;double flag1;int n1;while(flag-last>1e-5) {lastflag;flag*1.0*(2*n)*(2*n)/((2*n-1)*(2*n1));n;}return 2*last; }int main…

3Dmax效果图是如何做出来的?

如果不知道3Dmax效果图是如何做出来的朋友&#xff0c;可以通过这篇文章有一个概念。 我们需要先准备两款通用软件&#xff0c;3Dmax建模软件和Photoshop图形制作软件。 一、构建模型 我们以常见的室内为例&#xff0c;通过“样条线”或者基础“几何体”来创造我们需要的物体…

HTML好玩代码合集(1)

VIP代码合集🧧,这一期是场景式HTML代码,里面的文字也是可以修改的,不知道怎么修改可以私信我。 效果(玩个梗,别在意): 好玩代码: <!DOCTYPE html> <html> {#jishugang#}<head><meta charset="utf-8" /><title>怎么堵船了�…

Docker基础篇(二)

docker run -d docker run -d 容器名或容器ID docker run -d 后台生成容器&#xff0c;并退出容器&#xff08;除容器中在运行脚本&#xff09; docker run -it 交互生成容器 docker run -d centos /bin/sh -c “while true; do echo zen; sleep 2;done” 查看容器中的进程…

提高效率、降低成本:外贸企业必备好用ERP软件盘点

好用的外贸ERP软件有哪些&#xff1f;本期为您盘点的外贸ERP软件有&#xff1a;Zoho Books&#xff0c;孚盟M8&#xff0c;富通天下&#xff0c;睿贝软件。 外贸ERP系统是什么 企业资源规划&#xff08;ERP&#xff09;系统是一种先进的管理软件&#xff0c;尤其是在外贸和国际…

SwiftUI 集合视图(Grid)拖放交换 Cell 的极简实现

概览 自从 SwiftUI 横空出世那天起&#xff0c;小伙伴们都感受到了它惊人的简单与便捷。而在本课中&#xff0c;我们将会用一个小“栗子”更直观的让大家体验到它无与伦比简洁的描述性特质&#xff1a; 如上图所示&#xff0c;我们在 SwiftUI 中实现了 Grid 中拖放交换 Cell 的…

全球游戏市场回暖,Flat Ads推动海外获客增长

摘要:热门游戏品类分析,解读新兴市场与赛道 近日,中国音数协游戏工委发布了《2023年中国游戏出海研究报告》,据报告数据显示,2023年,全球游戏市场规模11773.79亿元,同比增长6.00%,呈现增长回暖趋势。 图源:伽马数据 1.SLG和RPG游戏热度居高不下,休闲游戏增长势头强劲 目前,S…

计算机网络:物理层详解

物理层 单工通道&#xff0c;半双工通道&#xff0c;全双工通道 单工通道&#xff08;Simplex Channel&#xff09;&#xff1a; 单工通道是一种只允许数据在一个方向上传输的通道&#xff0c;通信双方中的一个方向只能发送&#xff0c;另一个方向只能接收&#xff0c;不能同…

【CGAL系列】Remesh—1 Isotropic_remeshing_example

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ&#xff1a;870202403 前言 本文分享CGAL的Polygon_mesh_processing_Examples样例中的isotropic_remeshing_example&#xff0c;该样例主要介绍了如何生成各向同性的三角网格&#xff0c;希望对各位小伙伴有所帮助&#xff01; …

Android系统启动流程

android的启动流程是从底层开始进行的&#xff0c;具体如下所示&#xff1a; Android是基于Linux内核的系统&#xff0c;Android的启动过程主要分为两个阶段&#xff0c;首先是Linux内核的启动&#xff0c;然后是Android框架的启动。 可以将Andorid系统的启动流程分为以下五个…

获取discord上自己创建的服务器的服务器ID、频道ID以及discord的登录token(用于第三方登录)

在服务器图标上右键点击-》复制服务器ID 在频道上右键点击-》复制频道ID F12->手机模式-》application-》local storage-》填写过滤条件【token】 我开发的chatgpt网站&#xff1a; https://chat.xutongbao.top

【C->Cpp】由C迈向Cpp(4)

目录 &#xff08;一&#xff09;内联函数 &#xff08;二&#xff09;关键字auto &#xff08;三&#xff09;范围for &#xff08;四&#xff09;nullptr 正文开始&#xff1a; &#xff08;一&#xff09;内联函数 宏定义&#xff1a; C的内联函数是在C语言宏的基础上提出…

适用于 Linux、Windows 和 macOS 的免费 ONLYOFFICE 桌面应用程序

前言&#xff1a; 最近也是发现了一款特别好用的免费ONLYOFFICE 桌面应用程序忍不住分享给大家&#xff0c;这款编辑器能够打开、阅读和编辑多种文件类型&#xff0c;包括.docx文档、.pptx幻灯片和.xlsx表格等开放XML格式的Office文档。此外&#xff0c;ONLYOFFICE桌面编辑器还…

Puppeteer 使用实战:如何将自己的 CSDN 专栏文章导出并用于 Hexo 博客(三)

文章目录 往期效果将文章信息导出适配 hexo 的文章模板导出的文章路径问题终端控制执行脚本代码整理结尾 往期 Puppeteer 使用实战&#xff1a;如何将自己的 CSDN 专栏文章导出并用于 Hexo 博客&#xff08;二&#xff09; 效果 写了一个 node 脚本用来批量处理 md 文件 本期…