【lvgl】esp32移植lvgl

文章目录

  • 一、环境
  • 二、抓取代码
  • 三、切换分支
  • 四、配置芯片信息
  • 五、编译异常
    • 问题1: 未定义宽高
    • 问题2: 修改接口
    • 问题3: lv_mem_size
    • 问题4:头文件命名
    • 打开配置
    • 问题5:缺少font12
  • 六、配置引脚
    • 问题6:显示花屏,字符不清
  • 七、测试demo
  • 八、调整方向

一、环境

idf 4.4
lvgl 8.3.11

二、抓取代码

git clone --recurse-submodules git@github.com:lvgl/lv_port_esp32.git

在这里插入图片描述

三、切换分支

cd lv_port_esp32/components/lvgl
git branch -a
git checkout release/v8.3

在这里插入图片描述

四、配置芯片信息

选择端口
芯片信息,合宙esp32是c3
uart串口刷机
在这里插入图片描述
配置完成后试下编译是否通过

五、编译异常

问题1: 未定义宽高

在这里插入图片描述
解决
在components\lvgl_esp32_drivers\lvgl_helpers.h中添加宏定义

#define SPI_HOST_MAX 3
#ifdef CONFIG_LV_DISPLAY_ORIENTATION_PORTRAIT#define LV_HOR_RES_MAX 128#define LV_VER_RES_MAX 160
#else#define LV_HOR_RES_MAX 160#define LV_VER_RES_MAX 128
#endif

问题2: 修改接口

在这里插入图片描述

    static lv_disp_buf_t disp_buf;lv_disp_buf_init(&disp_buf, buf1, buf2, size_in_px);disp_drv.buffer = &disp_buf;lv_obj_t * label1 =  lv_label_create(scr, NULL);lv_obj_align(label1, NULL, LV_ALIGN_CENTER, 0, 0);

问题3: lv_mem_size

通过左下角的设置按钮,打开sdk configuration editor快速配置。

在这里插入图片描述
在这里插入图片描述

问题4:头文件命名

在这里插入图片描述
复制文件,并重名

在这里插入图片描述

打开配置

lv_demo_conf.h打开if否定

#if 1 /*Set it to "1" to enable the content*/#ifndef LV_DEMO_CONF_H
#define LV_DEMO_CONF_H

问题5:缺少font12

在这里插入图片描述
选中保存并重新编译
在这里插入图片描述

这时候可以顺利编译完成。

但是还是需要再结合具体芯片设置引脚

六、配置引脚

选择lcd控制芯片
在这里插入图片描述

在这里插入图片描述

问题6:显示花屏,字符不清

在这里插入图片描述

// #define ST7735_GREENTAB160x80 // For 160 x 80 display (BGR, inverted, 26 / 1 offset)
// #define COLSTART            26
// #define ROWSTART            1
#define COLSTART            0
#define ROWSTART            0

在这里插入图片描述

还是有半边花屏,因为这是适用于160*80的显示,所以还需调整lvgl 画布的大小

void lv_disp_drv_init(lv_disp_drv_t * driver)
{lv_memset_00(driver, sizeof(lv_disp_drv_t));#if defined(CONFIG_LV_DISPLAY_ORIENTATION_PORTRAIT)driver->hor_res          = 128;driver->ver_res          = 160;#elsedriver->hor_res          = 160;driver->ver_res          = 128;#endif // CONFIG_LV_DISPLAY_ORIENTATION_PORTRAIT
}

可以正常显示全屏了
在这里插入图片描述

但是色彩还有有问题
需要打开swap

在这里插入图片描述
在这里插入图片描述

七、测试demo

static void create_demo_application(void)
{/* When using a monochrome display we only show "Hello World" centered on the* screen */
#if defined CONFIG_LV_TFT_DISPLAY_MONOCHROME || \defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ST7735S
}

改为

static void create_demo_application(void)
{/* When using a monochrome display we only show "Hello World" centered on the* screen */
#if defined CONFIG_LV_TFT_DISPLAY_MONOCHROME
}

这样可以测试示例widgets。

在这里插入图片描述

发现色彩很怪,蓝色变成了黄色。
这是因为rgb变为了bgr。

解决方法有两个

  1. lcd驱动中设置色彩类型
  2. 通过lvgl color代码调整r和b
static void st7735s_set_orientation(uint8_t orientation)
{const char *orientation_str[] = {"PORTRAIT", "PORTRAIT_INVERTED", "LANDSCAPE", "LANDSCAPE_INVERTED"};ESP_LOGD(TAG, "Display orientation: %s", orientation_str[orientation]);/*Portrait:  0xC8 = ST77XX_MADCTL_MX | ST77XX_MADCTL_MY | ST77XX_MADCTL_BGRLandscape: 0xA8 = ST77XX_MADCTL_MY | ST77XX_MADCTL_MV | ST77XX_MADCTL_BGRRemark: "inverted" is ignored here*/uint8_t data[] = {0xC8, 0xC8, 0xA8, 0xA8};ESP_LOGD(TAG, "0x36 command value: 0x%02X", data[orientation]);st7735s_send_cmd(ST7735_MADCTL);st7735s_send_data((void *) &data[orientation], 1);
}

其中的== {0xC8, 0xC8, 0xA8, 0xA8};==
更换为C0,80
在这里插入图片描述
在这里插入图片描述

八、调整方向

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vscode连接ssh报错

关于vscode更新版本至1.86后,导致无法连接服务器问题的记录 原因:vscode1.86更新了对glibc的要求,需要最低2.28版本,导致各种旧版本的linux发行版(比如最常见的centos 7)都无法用remote-ssh来连接了&#…

Windows11安装运行Linux(Ubuntu)

一、安装windows支持 输入windows打开界面 选择虚拟机监控程序平台、适用于linux的子系统、虚拟机平台 在 Windows 系统中,"虚拟机平台"和"虚拟机监控程序平台"是两个与虚拟化相关的功能,但它们各自有着不同的作用和用途。 虚拟机…

【ArcGIS微课1000例】0101:删除冗余节点或折点

文章目录 一、实验描述二、实验数据三、实验过程1. 手动删除2. 简化线工具四、注意事项一、实验描述 矢量数据获取通常来源于手动或者ArcScan自动采集,其基本存储方式就是记录每个要素的点坐标,如点要素就是一个坐标、线要素由多个点要素连接形成。当某段线要素被过多的节点…

thinkphp数据批量提交(群发消息)

<form id="edit-form" class="form-horizontal" role="form" data-toggle<

LeetCode、1137. 第 N 个泰波那契数【简单,动态规划】

文章目录 前言LeetCode、1137. 第 N 个泰波那契数【简单&#xff0c;动态规划】题目与分类思路一维动态规划 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里云平台优质作者、专注于Java后端技术…

2024/2/5总结

微信小程序 监听对象中所有属性的变化 如果某个对象中需要被监听的属性太多&#xff0c;为了方便&#xff0c;可以使用 通配符 ** 来监听 对象中所有属性的变化 什么是纯数字字段 概念&#xff1a;纯数字字段指的是那些不用于界面渲染的 data 字段。 好处&#xff1a;提升界面…

敏捷开发中的用户故事

用户故事 drawio是一款强大的图表绘制软件&#xff0c;支持在线云端版本以及windows, macOS, linux安装版。 如果想在线直接使用&#xff0c;则直接输入网址drawon.cn或者使用drawon(桌案), drawon.cn内部完整的集成了drawio的所有功能&#xff0c;并实现了云端存储&#xff0c…

transformers重要组件(模型与分词器)

1、模型&#xff1a; from transformers import AutoModelcheckpoint "distilbert-base-uncased-finetuned-sst-2-english" model AutoModel.from_pretrained(checkpoint) 除了像之前使用 AutoModel 根据 checkpoint 自动加载模型以外&#xff0c;我们也可以直接…

如何利用边缘计算网关进行机床数据采集,以提高数据采集的效率和准确性-天拓四方

边缘计算网关集成了数据采集、处理和传输功能的嵌入式设备。它位于传感器和执行器组成的设备层与云计算平台之间&#xff0c;能够实时处理和响应本地设备的数据请求&#xff0c;减轻云平台的压力&#xff0c;提高数据处理的速度和效率。同时&#xff0c;边缘计算网关还可以将处…

跟着cherno手搓游戏引擎【21】shaderLibrary(shader管理类)

前置&#xff1a; ytpch.h&#xff1a; #pragma once #include<iostream> #include<memory> #include<utility> #include<algorithm> #include<functional> #include<string> #include<vector> #include<unordered_map> #in…

ROS笔记一:工作空间和功能包

目录 工作空间 如何创建工作空间&#xff1a; 编译工作空间 设置环境变量 功能包 创建功能包 CMakeLists.txt package.xml 工作空间 ROS的工作空间是用来存放工程文件代码的文件夹 ROS的开发依赖于工作空间&#xff0c;包括编写代码、编译等都是在工作空间下进行的 工作空…

如何在Termux中使用Hexo结合内网穿透工具实现远程访问本地博客站点

文章目录 前言 1.安装 Hexo2.安装cpolar3.远程访问4.固定公网地址 前言 Hexo 是一个用 Nodejs 编写的快速、简洁且高效的博客框架。Hexo 使用 Markdown 解析文章&#xff0c;在几秒内&#xff0c;即可利用靓丽的主题生成静态网页。 下面介绍在Termux中安装个人hexo博客并结合…

GO语言集成开发 JetBrains GoLand 2023 中文

JetBrains GoLand 2023是一款专为Go语言开发者打造的集成开发环境&#xff08;IDE&#xff09;。它基于IntelliJ IDEA平台&#xff0c;提供了丰富的功能和工具&#xff0c;旨在提高开发效率和质量。GoLand 2023具备强大的Go语言支持&#xff0c;包括语法高亮、自动补全、代码提…

RPA财务机器人之UiPath实战 - 自动化操作Excel进行财务数据汇总与分析之流程建立与数据读取、处理、汇总、分析

一、案例介绍&#xff1a; A公司共有13个开在不同银行的帐户&#xff0c;分别用于不同的业务分部或地区分部收付款。公司总部为了核算每月的收支情况&#xff0c;查看银行在哪个月交易量频繁&#xff0c;需要每月汇总各个银行的帐户借方和贷方金额&#xff0c;并将其净收支&am…

unity 增加系统时间显示、FPS帧率、ms延迟

代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;using UnityEngine;public class Frame : MonoBehaviour {// 记录帧数private int _frame;// 上一次计算帧率的时间private float _lastTime;// 平…

MATLAB Fundamentals>>>Centering and Scaling

MATLAB Fundamentals>Common Data Analysis Techniques>Polynomial Fitting>Centering and Scaling 数据导入 This code sets up the activity. yr 2000:2007 penguins [5.49 7.03 7.73 7.70 9.29 9.21 11.89 10.85] 附加练习 How does the model look?…

Node.js JSON Schema Ajv依赖库逐步介绍验证类型和中文错误提示

在构建应用程序时&#xff0c;数据的有效性是至关重要的。为了确保传入的数据符合预期的格式和规范&#xff0c;我们可以使用 Ajv&#xff08;Another JSON Schema Validator&#xff09;进行验证。在这篇博文中&#xff0c;我们将从头开始学习 Ajv&#xff0c;逐步介绍验证类型…

Unity3D判断屏幕中某个坐标点的位置是否在指定UI区域内

系列文章目录 unity工具 文章目录 系列文章目录前言一、使用rect.Contains()判断1-1、转换坐标1-2、代码如下&#xff1a;1-3、注意事项1-3、测试效果如下 二、使用坐标计算在不在区域内2-1、方法如下&#xff1a;2-2、注意事项 三、使用RectTransformUtility.ScreenPointToLo…

MongoDB从入门到实战之Docker快速安装MongoDB

前言 在上一篇文章中带领带同学们快速入门MongoDB这个文档型的NoSQL数据库&#xff0c;让大家快速的了解了MongoDB的基本概念。这一章开始我们就开始实战篇教程&#xff0c;为了快速把MongoDB使用起来我将会把MongoDB在Docker容器中安装起来作为开发环境使用。然后我这边MongoD…

SQL Server数据库日志查看若已满需要清理的三种解决方案

首先查看获取实例中每个数据库日志文件大小及使用情况&#xff0c;根据数据库日志占用百分比来清理 DBCC SQLPERF(LOGSPACE) 第一种解决方案&#xff1a; 在数据库上点击右键 → 选择 属性 → 选择 文件&#xff0c;然后增加数据库日志文件的文件大小。 第二种解决方案 手动…