目录

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初始化输入设备。

LVGL学习笔记7 - GD32平台优化相关推荐

  1. TensorFlow 深度学习笔记 TensorFlow实现与优化深度神经网络

    TensorFlow 深度学习笔记 TensorFlow实现与优化深度神经网络 转载请注明作者:梦里风林 Github工程地址:https://github.com/ahangchen/GDLnote ...

  2. 深度学习笔记(10) 优化算法(二)

    深度学习笔记(10) 优化算法(二) 1. Adam 优化算法 2. 学习率衰减 3. 局部最优的问题 1. Adam 优化算法 Adam代表的是 Adaptive Moment Estimation ...

  3. 深度学习笔记(9) 优化算法(一)

    深度学习笔记(9) 优化算法(一) 1. Mini-batch 梯度下降 2. 指数加权平均数 3. 动量梯度下降法 4. 均方根反向传播 1. Mini-batch 梯度下降 把训练样本放大巨大的矩 ...

  4. TDDFT计算软件Octopus学习笔记(四):带隙优化方法

    密度泛函理论是一种基态的理论,然而能带结构和带隙属于物质的激发态特性.因此DFT的固有缺点就是会低估带隙能量.这一缺点可以通过不同的方式加以修正.本文介绍两种方法. (一) DFT+U方法 (以ZnO ...

  5. LVGL学习笔记(二):从0到1移植LVGL8.1到STM32平台上(完结篇)

    目录 一:TFT-LCD屏触摸 二:STM32CubeMX配置 三:FT5206触摸芯片驱动代码移植 四:LVGL 移植 4.1 源码下载 4.2 代码移植 4.3 添加源码至工程 4.4 指定头文件 ...

  6. LVGL学习笔记1 - 准备

    目录 1. 下载LVGL源代码 2. 平台 3. 导入到工程 3.1 配置头文件 3.2 src文件夹 4. 移植 4.1 显示接口部分 4.1.1 disp_init 4.1.2 lv_port_d ...

  7. Apollo星火计划学习笔记|L1 Apollo平台安装(2021年9月更新)

    系列文章目录 L1 Apollo平台安装 L2 CyberRT学习 L5 Routing简介 目录 系列文章目录 Apollo简介 Apollo安装 安装过程中遇到的问题. 综述文章 报名了百度apo ...

  8. 【LVGL学习笔记】(五)使用SquareLine Studio设计UI

    LVGL全程LittleVGL,是一个轻量化的,开源的,用于嵌入式GUI设计的图形库.并且配合LVGL模拟器,可以在电脑对界面进行编辑显示,测试通过后再移植进嵌入式设备中,实现高效的项目开发. LVG ...

  9. 人工智障学习笔记——梯度下降(2)优化算法

    四.优化 4-1 Momentum 如果我们把梯度下降法当作小球从山坡到山谷的一个过程,那么在小球滚动时是带有一定的初速度,在下落过程,小球积累的动能越来越大,小球的速度也会越滚越大,更快的奔向谷底, ...

最新文章

  1. HDU 4540 威威猫系列故事――打地鼠(DP)
  2. c多线程并发处理方式_ElasticSearch 并发的处理方式:锁和版本控制
  3. python从入门到精通视频教程百度云-python从入门到精通视频教程百度云资源
  4. IDEA工具创建项目并提交码云和一些基本使用
  5. Android开发——跟随手指的小球实现
  6. _tcscpy_s函数引发的问题
  7. 面试必问,如何控制多个线程的执行顺序
  8. python apscheduler一次只有一个job_Python使用APScheduler实现定时任务过程解析
  9. springboot细节挖掘(配置Swagger2)
  10. git命令提交本地代码到远程仓库
  11. -2. JavaScript Methods
  12. drozer报错解决
  13. linux系统权限640,linux权限及权限管理
  14. java二面问什么_java面试题,拼多多面试题分享(java二面)
  15. 一、神经科学的过去,现在,未来
  16. win10任务栏卡死重启也没用
  17. 计算机基础一:IP地址与域名解析
  18. 珍稀资料:1950年中国高考数学真题
  19. 019基于脑电图信号和CNN的癫痫发作检测2018
  20. 一小时内了解密码学:你需要知道的一切

热门文章

  1. mobiscroll实践:移动端仿苹果select效果的实现
  2. 凯诺克斯品牌百科介绍
  3. 第二代天神:克罗诺斯
  4. CloudEvents 核心规范
  5. 设置GPU实现深度学习单卡、多卡 训练
  6. 关于什么是大研发的一点思考
  7. 网络流--最大流(思想)
  8. 程序计时方法(c/c++实现)
  9. OSL 网络的分层思想和封装的基本概念
  10. 台电x80HD 安装linux系统,可调电压电源供电,外网访问、3D打印klipper固件