沁恒CH32V307开发板移植lvgl V9版本图形库

server/2024/9/24 6:51:26/

我们在移植lvgl9版本之前也是去网上进行了大量资料的查找,发现关于lvgl的移植大多停留在8版本的基础上,所以我们绝对自己干,并把移植过程中遇到的问题总结出来,这里主要为大家总结一下移植中一些容易踩的坑,以及8版本和9版本的一些不同,方便大家参考学习。

下面分为这几个步骤进行

这里我们默认大家都是用MRS创建好了,CH32V307对应的工程,所以工程创建就不做赘述了

官方提取lcd文件

对于每个不同的开发板或者不同的厂家,都对应有其不同引脚操作的差异性,我们这里使用沁恒CH32V307的开发板就需要拿到这块板子对应的lcd文件

这里我们直接去官方仓库拿就可以了

仓库地址:https://gitee.com/lyhmaodou/opench-ch32v307

在仓库中拿到lcd.h和lcd.c文件,放到我们工程的User目录下

官网下载最新版本lvgl库

从github上下载lvgl最新版本,仓库地址:https://github.com/lvgl/lvgl

下载解压后,放到我们创建好的工程中

目录结构如下:

更改配置参数

  • 将lvgl目录下lv_conf_template.h重命名为lv_conf.h,并将if 0改为1

  • 添加两个宏MY_DISP_HOR_RES和MY_DISP_VER_RES表示屏幕的宽和高,我这里是240x240,这里按照大家的屏幕配置即可

  • 将lvgl/examples/porting目录下,lv_port_disp_template.hlv_port_disp_template.c文件的_template删除

  • 修改lv_port_disp.c文件中的disp_flush函数,为下面的代码

static void disp_flush(lv_display_t * disp_drv, const lv_area_t * area, uint8_t * px_map)
{if(disp_flush_enabled) {uint16_t* p_map = (uint16_t*)px_map;int32_t x;int32_t y;for(y = area->y1; y <= area->y2; y++) {for(x = area->x1; x <= area->x2; x++) {lcd_draw_point_color(x, y, *p_map);p_map++;}}}lv_display_flush_ready(disp_drv);
}
  • 最后一个配置就是关于lvgl RAM使用的配置,这取决于你使用的开发板,我这里给lvgl分配64K的RAM是不行的,这部分的配置也在lvgl的配置头文件中

  • 接下来在工程的引入文件中,将lvgl/src下的工程目录添加到工程中

添加例程编译工程

下面就是在工程中使用lvgl库

这里我们给出main.c代码,我们这里运行的是官方例子中的lv_example_arc_1,大家可以参考一下

#include "debug.h"
#include "lvgl.h"
#include "lcd.h"
#include "lv_port_disp.h"
#include "lv_examples.h"void GUITest()
{my_gui();
}int main(void)
{NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);Delay_Init();USART_Printf_Init(115200);printf("SystemClk:%d\r\n",SystemCoreClock);lcd_init();              LCD_SetBrightness(40);lv_init();               lv_port_disp_init();     lv_example_arc_1();  while(1){lv_tick_inc(1);lv_task_handler(); Delay_Ms(1); }
}

编译结果:

烧写到开发板上查看结果

到这里CH32V307开发板对lvgl9版本图形库的移植配置就介绍到这里了,如配置中大家遇到什么问题欢迎评论

感谢观看学习,大佬们多多指点,愿明天的自己会感谢当下的努力!!!!


http://www.ppmy.cn/server/43066.html

相关文章

超值分享50个DFM模型格式的素人直播资源,适用于DeepFaceLive的DFM合集

50直播模型&#xff1a;点击下载 作为直播达人&#xff0c;我在网上购买了大量直播用的模型资源&#xff0c;包含男模女模、明星脸、大众脸、网红脸及各种稀缺的路人素人模型。现在&#xff0c;我将这些宝贵的资源整理成合集分享给大家&#xff0c;需要的朋友们可以直接点击下…

Flutter 中的 CupertinoTabView 小部件:全面指南

Flutter 中的 CupertinoTabView 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;CupertinoTabView 是 Cupertino 组件库中的一个 widget&#xff0c;它用于创建 iOS 风格的标签页视图。这个 widget 通常与 CupertinoTabScaffold 结合使用&#xff0c;提供了一个底部带有…

当HR问你是否单身时,该怎么回答?

知识星球&#xff08;星球名&#xff1a;芯片制造与封测技术社区&#xff0c;星球号&#xff1a;63559049&#xff09;里的学员问&#xff1a;我是晶圆厂厂务工程师&#xff0c;最近在面试新工作&#xff0c;但是几乎每家HR都会问我同一个问题&#xff1a;你结婚没有&#xff1…

解决go install 网络问题

rootiZbp1hiqzlhh6w05gloffgZ:~# go install mvdan.cc/garblelatest go: mvdan.cc/garblelatest: module mvdan.cc/garble: Get "https://proxy.golang.org/mvdan.cc/garble/v/list": dial tcp 172.217.160.81:443: i/o timeout解决方法 更换阿里代理 rootiZbp1hiq…

Spring6基础笔记

Spring6 Log4j2 1、概述 1.1、Spring是什么&#xff1f; Spring 是一款主流的 Java EE 轻量级开源框架 &#xff0c;Spring 由“Spring 之父”Rod Johnson 提出并创立&#xff0c;其目的是用于简化 Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发…

【Python设计模式06】代理模式

代理模式&#xff08;Proxy Pattern&#xff09;是一种结构型设计模式&#xff0c;它通过创建代理对象来控制对另一个对象的访问。代理模式可以用于延迟实例化、控制访问权限、记录日志等。代理模式的核心思想是为其他对象提供一种代理&#xff0c;以控制对这个对象的访问。 代…

逃逸分析和标量替换有何区别

1、逃逸分析&#xff08;Escape Analysis&#xff09;&#xff1a; 逃逸分析是一种分析技术&#xff0c;用于判断一个对象&#xff08;通常是一个Java对象&#xff09;在方法执行过程中是否会被外部方法或线程所引用。它主要关注对象的动态作用域&#xff0c;即对象在方法执行…