我们在移植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删除

  • 最后一个配置就是关于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版本图形库的移植配置就说到这里了,在配置中遇到的问题大家可以评论共同探讨
——黑龙江工程学院·奇创科技社团嵌入式组

说点什么吧...

qZMtmT.png网站备案号:ICP备16046599号-1