【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.hqwc.cn/news/454734.html

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

相关文章

import blind_watermark ModuleNotFoundError: No module named ‘blind_watermark‘

Traceback (most recent call last): File "d:\python\PYTHON_VSCOD\demo.py", line 1, in <module> import blind_watermark ModuleNotFoundError: No module named blind_watermark 如何选择正确的解释器 在 Visual Studio Code (VS Code) 中更改 Python 解释…

高并发内存池项目

目录 项目简介什么是内存池池化技术内存池 内存池主要解决的问题定长内存池的设计高并发内存池的整体框架设计thread cachethread cache的整体设计thread cache哈希桶的对齐规则threadcacheTLS无锁访问 central cachecentralcache整体设计central cache 结构设计central cache核…

详解SkyWalking前端监控的性能指标

SkyWalking 从8.2.0版本开始支持对前端浏览器端的性能进行监控&#xff0c;不仅可以像以前一样监控浏览器发送给后端服务的与请求&#xff0c;还能看到前端的渲染速度、错误日志等信息——这些信息是获取最终用户体验的最有效指标。实现的方式是引入skywalking-client-js库&…

嵌入式软件的设计模式与方法

思想有多远&#xff0c;我们就能走多远 4、状态与工作流类设计模式 4.1 状态与事件 行为随条件变化而改变&#xff0c;这里状态切换的模式也称为状态机。有限状态机 (Finite State Machine&#xff0c;FSM) 是由3 个主要元素组成的有向图: 状态、转换和动作。 状态是系统或者…

92.网游逆向分析与插件开发-游戏窗口化助手-显示游戏数据到小助手UI

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;游戏窗口化助手的UI设计-CSDN博客 码云地址&#xff08;游戏窗口化助手 分支&#xff09;&#xff1a;https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号&#xff1a;e8116af3a7b0186adba…

PHP客服系统-vue客服聊天系统

PHP-Vue客服聊天系统是一款高效、灵活的客户服务解决方案&#xff0c;基于ThinkPHP6、Vue3和Workerman(Gateworker)框架开发&#xff0c;专为单商户场景打造。 系统亮点&#xff1a; 分布式部署支持&#xff0c;轻松应对高并发场景&#xff1b;本地消息存储功能&#xff0c;确…

在Vue中如何动态绑定class和style属性

在Vue中&#xff0c;动态绑定class和style属性是我们经常遇到的需求。这个功能允许我们根据不同的条件来动态改变元素的样式&#xff0c;让我们的应用更加灵活和富有交互性。在本篇博客文章中&#xff0c;我将带你深入探索在Vue中如何实现这一功能。 首先&#xff0c;让我们了…

3. ⼤语⾔模型深度学习背景知识

1. LLM⼤语⾔模型⼀般训练过程 #mermaid-svg-8kci1fjEPiVolPue {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-8kci1fjEPiVolPue .error-icon{fill:#552222;}#mermaid-svg-8kci1fjEPiVolPue .error-text{fill:#5522…

Class 类

1、私有变量2、私有方法3、对象关联 Class Abc(object):def xxx():passClass Abc:def xxx():pass1、私有变量 类变量可以被外部调用并改动值 class Cat(object):def __init__(self, name, age):self.name nameself.age agedef __str__(self):return "我的名字叫{}&…

InnoDB 锁系统(小白入门)

1995年 &#xff0c;MySQL 1.0发布&#xff0c;仅供内部使用&#xff01; 开发多用户、数据库驱动的应用时&#xff0c;最大的一个难点是&#xff1a;一方面要最大程度地利用数据库的并发访问&#xff0c;另一方面还要确保每个用户能以一致性的方式读取和修改数据。 MVCC 并发…

有趣的css - 简约的动态关注按钮

简约的动态关注按钮 页面效果核心代码html代码css代码 完整代码html页面css样式页面效果 页面效果 此效果主要使用 css 伪选择器配合 css content 属性&#xff0c;以及 transition(过渡)属性来实现一个简约的动态按钮效果。 此效果可适用于关注按钮、详情按钮等&#xff0c;增…

问题:创业者在组建创业团队时,在个人特征和动机方面更应该注重创业者的( ) #知识分享#微信#媒体

问题&#xff1a;创业者在组建创业团队时&#xff0c;在个人特征和动机方面更应该注重创业者的&#xff08; &#xff09; 参考答案如图所示