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