LVGL学习笔记7 - GD32平台优化

news2024/9/25 23:16:37

目录

1. 颜色深度

2. 更新disp_init

3. 更新disp_flush

4. 改为IPA更新数据

 5. 死机问题


学习过程中发现GD32平台的显示效果不佳,而且会出现死机的问题,需要优化一下平台代码。

1. 颜色深度

修改颜色深度为32bit。

#define LV_COLOR_DEPTH 32

2. 更新disp_init

修改GD32F450图层格式

static void disp_init(void)
{
    /*You code here*/
    lv_color_t *pTFTBuf = (lv_color_t *)GUI_TFT_BUF_START;
    tliLayer_t layer;
    layer.alpha = 0xFF;
    layer.bufAddr = (uint32_t)pTFTBuf;
    layer.defalutColor = 0x00FFFFFF;
    layer.format = FORMAT_ARGB8888;
    layer.x = 0;
    layer.y = 0;
    layer.w = TFT_WIDTH;
    layer.h = TFT_HEIGHT;
    tliLayerInit(0, layer, 1);
}

3. 更新disp_flush

static void disp_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p)
{
    /*The most simple case (but also the slowest) to put all pixels to the screen one-by-one*/
    int32_t x;
    int32_t y;
    lv_color_t *pTFTBuf = (lv_color_t *)GUI_TFT_BUF_START;
    //Printf("draw:(%d, %d) - (%d, %d)\n", area->x1, area->y1, area->x2, area->y2);
    for(y = area->y1; y <= area->y2; y++) {
        for(x = area->x1; x <= area->x2; x++) {
            /*Put a pixel to the display. For example:*/
            /*put_px(x, y, *color_p)*/
            (*(lv_color_t *)(pTFTBuf + y * TFT_WIDTH + x)).full = (*color_p).full;
            color_p++;
        }
    }

    /*IMPORTANT!!!
     *Inform the graphics library that you are ready with the flushing*/
    lv_disp_flush_ready(disp_drv);
}

将颜色更新部分改为lv_color_t格式。

这时候发现颜色不对,显示效果还是很差。

调试这部分发现GD32F450使用SDRAM的情况下,SDRAM部分还有问题,导致显存数据不对,显示的效果才差。需要将SDRAM的时钟配置为3个HCLK。 

4. 改为IPA更新数据

static void disp_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p)
{
    ipaBG_t bgSetting;
    ipaFG_t fgSetting;
    lv_color_t *pTFTBuf = (lv_color_t *)GUI_TFT_BUF_START;
    ipaSetConvertMode(IPA_CONVERT_MODE_DIRECT);
    bgSetting.addr = (uint32_t)pTFTBuf;
    bgSetting.preColor = 0xFF0000FF;
    bgSetting.xOffset = area->x1;
    bgSetting.yOffset = area->y1;
    bgSetting.w = (area->x2 - area->x1 + 1);
    bgSetting.h = (area->y2 - area->y1 + 1);
    ipaConfigBg(0, bgSetting);
    
    fgSetting.addr = (uint32_t)color_p;
    fgSetting.offset = 0;
    fgSetting.format = FORMAT_ARGB8888;
    fgSetting.alphaAlgorithm = 0;
    fgSetting.preColor = 0;
    
    fgSetting.w = (area->x2 - area->x1 + 1);
    fgSetting.h = (area->y2 - area->y1 + 1);
    ipaConfigFg(fgSetting);
    ipaEnable(1);

    /*IMPORTANT!!!
     *Inform the graphics library that you are ready with the flushing*/
    lv_disp_flush_ready(disp_drv);
}

 5. 死机问题

调试发现死机是增加Group(lv_indev_set_group(indev_keypad, groupRect);这句引起的)造成的。

    groupRect = lv_group_create();
    lv_indev_set_group(indev_keypad, groupRect);
    lv_group_add_obj(groupRect, obj1);
    lv_group_add_obj(groupRect, obj2);
    lv_group_add_obj(groupRect, obj3);

 

结果发现没有调用lv_port_indev_init初始化输入设备。

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

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

相关文章

时序引擎架构和实例演练

一、时序引擎介绍 开务数据库时序引擎是一款功能丰富、高性能的时序引擎&#xff0c;专为物联网、工业互联网、数字能源、金融等场景设计并优化。它能让大量设备、数据采集器每天产生的高达 TB 甚至 PB 级的数据得到高效实时的处理&#xff0c;对业务的运行状态进行实时的监测、…

银行卡数据标签的列举与使用

银行卡三要素&#xff1a;银行卡号、姓名、身份证号&#xff0c;银行卡四要素是指银行卡号、姓名、身份证号、手机号。对于从事信贷风控的小伙伴来讲&#xff0c;并不陌生。 银行卡信息的应用可能更熟悉的是客户信息核验&#xff0c;也就是针对信贷客户审批额度发放之前&#x…

SpringCloud系列(七)最详细最全面详述统一网关 Gateway

有道词典上对 Gateway 有大门口, 门道, 通道以及计算机术语中的网关之意, 其实对于网关这个概念是很好理解的, 例如有这样高档的小区车库, 当开车经过闸口的时候会识别你的车牌号, 识别成功后会自动将你的车库门打开; 其实计算机中的网关也是如此, 在 Spring Cloud 中网关的实现…

【1 - 决策树 - 原理部分】菜菜sklearn机器学习

课程地址&#xff1a;《菜菜的机器学习sklearn课堂》_哔哩哔哩_bilibili 第一期&#xff1a;sklearn入门 & 决策树在sklearn中的实现第二期&#xff1a;随机森林在sklearn中的实现第三期&#xff1a;sklearn中的数据预处理和特征工程第四期&#xff1a;sklearn中的降维算法…

LOAM和SSL-SLAM

今天来水两个激光SLAM的相关框架的学习笔记。 一、LOAM 首先介绍scan-to-scan map-to-map scan-to-map之间的关系&#xff1a; 1.scan-to-scan匹配 即两帧激光雷达数据之间的匹配&#xff0c;目的是求得从起始帧A到目标帧B的相对平移量与旋转矩阵。目前来说scan-toscan中&a…

Elasticsearch搜索引擎

The Elastic Stack, 包括 Elasticsearch【搜索&#xff0c;分析】、 Kibana【可视化】、 Beats 和 Logstash【数据的搜集】&#xff08;也称为 ELK Stack&#xff09;。能够安全可靠地获取任何来源、任何格式的数据&#xff0c;然后实时地对数据进行搜索、分析和可视化。 Elati…

安装压缩包版mysql

一、mysql-8.0.21-winx64.zip解压 二、在解压后的目录下添加data目录 三、配置环境变量 win7&#xff1a; ​ 我的电脑–>属性–>高级系统设置–>高级–>环境变量 ​ 在下面系统变量中 ​ 新建 ​ 变量名&#xff1a;MYSQL_HOME ​ 变量值&#xff1a;E:\MySQL\my…

常用的接口安全性保障手段

http接口有哪些安全问题 数据被抓包窃取数据被恶意篡改数据被爬取泄漏Token授权机制 用户使用用户名密码登录后服务器给客户端返回一个Token&#xff08;通常是UUID&#xff09;&#xff0c;并将Token-UserId以键值对的形式存放在缓存服务器中。服务端接收到请求后进行Token验…

UG NX二次开发(C#)-曲线-NXOpen.Curve初探

系列文章目录 `` 例如:第一章 初探NXOpen.Curve类 文章目录 系列文章目录1.前言2.NXOpen.Curve2. NXOpen.Curve包含的子类3.曲线类型的获取4.将曲线对象转换为子类类型1.前言 介绍下NXOpen.Curve类、Curve类型的获取、一些创建曲线的封装方法(包括直线、样条曲线、圆锥曲线…

OSM数据内容解析

OSM数据内容解析 数据简介 OpenStreetMap&#xff08;简称OSM&#xff0c;中文是公开地图&#xff09;&#xff0c;这是一个网上地图协作计划&#xff0c;目标是创造一个内容自由且能让所有人编辑的世界地图。是一款由网络大众共同打造的免费开源、可编辑的地图服务。 OSM采…

成功实施APS生产排程系统,必须具备哪些条件?

在许多生产管理者眼中&#xff0c;生产作业计划是不重要的&#xff0c;如果我们只停留在小加工作坊的规模&#xff0c;大脑就能把一个月的订单、物料、资源记得清清楚楚&#xff0c;那么生产计划排程的必要性确实不太大&#xff0c;但事实上&#xff0c;随着生产规模的扩大&…

JDK1.8中HashMap的resize()方法详解

JDK1.8中HashMap的resize()方法详解 文章目录JDK1.8中HashMap的resize()方法详解[toc]一、概述二、源码解析三、元素迁移四、小结在学习本文之前&#xff0c;默认大家已经有了HashMap源码的前置知识。 「集合底层」深入浅出HashMap底层源码 一、概述 resize()方法的代码比较长…

OpenHarmony#深入浅出学习eTs#(四)登陆界面UI

本项目Gitee仓地址&#xff1a;深入浅出eTs学习: 带大家深入浅出学习eTs (gitee.com) 一、明确目标 经过前面两章的学习&#xff0c;大家对Super Visual应该有了一个较为简单的认识&#xff0c;这一章就把前面的知识点串一下&#xff0c;使用Ark UI(Super Visual)赖模仿一个Q…

浅谈权限系统在多利熊业务应用

作者 | 百度智能小程序团队 导读 本文首先引入多利熊业务介绍&#xff0c;引出多利熊业务建设权限系统的痛点&#xff0c;接着分别从权限系统模型、权限系统设计以及多利熊业务业务应用方面详细探讨了具体的方案和设计&#xff0c;最后对权限系统设计思考&#xff0c;对数据维度…

linux连接器脚本前奏-基于x86(一)

从今天开始进入正文,和讲解liteos一样,我们先从连接器脚本开讲。我们知道连接器脚本描述了编译输出程序的布局,那么linux内核编译输出的布局是怎么样的呢?听我慢慢道来,关于连接器脚本的大概使用用途,可以参见 liteos链接器脚本一 liteos链接器脚本二 这里先说明一下对于…

Python进行异步请求,实现多开任务

前言 本文是该专栏的第5篇,后面会持续分享python的各种干货知识,值得关注。 在工作中,你可能或多或少会接到这样一个任务需求。 给你一个任务队列,需要你进行多任务去实现处理,尤其在爬虫项目或者是使用selenium,pyppeteer等任务中比较常见,至于多线程和多进程那些,笔…

OpenCL 是什么

OpenCL 创建Program对象|极客笔记 文章目录 OpenCL标准什么是OpenCL OpenCL全称为Open Computing Language&#xff08;开放计算语言&#xff09;&#xff0c;先由Apple设计&#xff0c;后来交由Khronos Group维护&#xff0c;是异构平台并行编程的开放的标准&#xff0c;也是…

antd 时间类组件的国际化 locale 设置不生效 解决方案汇总

antd 时间类组件的国际化 locale 设置不生效&#xff0c;踩坑之路和解决办法 问题 如图所示&#xff0c;antd 时间类组件中英文混合显示&#xff1a; 初始配置代码如下&#xff1a; import ./index.css; import ./global.less;import { ConfigProvider } from antd; import…

excel表格制作如何设置?新手必备教程!

Excel是一种专门用于制作表格、输入数据和统计分析的办公软件&#xff0c;日常办公中它带给我们极大的便利。下面我们一起来看看excel表格制作如何操作&#xff1f;为了方便理解&#xff0c;下面分为详细的六个步骤。你可以根据下面的操作顺序来操作&#xff08;里面有些顺序是…

Windows版本Tomcat升级openssl版本

本次教程适用于windows版本安装Tomcat调整openssl版本。 下载Tomcat Native Tomcat native提供让Tomcat以APR模式运行&#xff0c;APR的全称是Apache Portable Runtime&#xff0c;它是一个高度可移植的库&#xff0c;它是Apache HTTP Server 2.x的核心。APR有许多用途&#…