用到的所有文件链接
我整理的lvgl文件:https://gitee.com/BHJ2022/lvgl.git
gsm项目地址:https://gitee.com/gsm-wheather-project
零、准备工作
解压lvgl_disp_indev和gsm项目文件
1)将gsm中的屏幕及触摸驱动(touch_screen文件夹)直接复制到lvgl_disp_indev的component文件中
2)修改touch_screen的cmakelist如图

3)将gsm中的main中的include直接复制到lvgl_disp_indev的main文件中。包含main.h(头文件和函数声明)和bsp_board(管脚定义)
4)修改main的cmakelist如图

]
前期准备工作完毕
一、移植屏幕驱动
1、屏幕驱动修改添加背光(原工程使用的PMW,这里直接设置为高电平)——led.c
在 lcd_init()中添加,

![)]](https://i-blog.csdnimg.cn/blog_migrate/97fdf15aa192ea0776fdc3dac39c7796.png)
2、lvgl接口修改
文件名
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fB3zDSDb-1669538043938)(C:\Users\LEGION\AppData\Roaming\Typora\typora-user-images\image-20221127144224227.png)]](https://i-blog.csdnimg.cn/blog_migrate/ca932c436b5b55c75f638fd9ea9950ba.png)
注释或删除lvgl_helper.h(esp32的驱动头文件),直接删除esp32Driver文件夹
添加屏幕长宽声明

屏幕显示初始化disp_init();

在函数中添加屏幕的初始化,或者直接将disp_init()改为lcd_init(SPI3_HOST, 80000000);

添加刷屏函数
双缓存模式,将【】中的数据改为图示

设置屏幕尺寸,前文定义的

设置刷屏回调函数

刷屏函数,调用的屏幕驱动中的函数lcd_flush_area()

完成以上步骤屏幕就应该可以正常显示了
二、移植触摸驱动
触摸芯片型号:cst816t
1、修改cst816.c,添加i2c初始化函数

2、在cst816t_init()初始化函数中调用

3、可以在cst816t_read_pos()中添加如图语句,可以检查触摸是否正常

串口输出
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eOJcOvvt-1669538043942)(C:\Users\LEGION\AppData\Roaming\Typora\typora-user-images\image-20221127150931813.png)]](https://i-blog.csdnimg.cn/blog_migrate/a69bd5e2b4efd58d63d61e55d48f0d82.png)
4、lvgl_disp_indev修改,修改touchpad_init();添加indev_drv.read_cb = touchpad_read;
1)打开touchpad(改为if1),如果没有其他输入设备需求,可以关闭mouse和encoder(改为if 0)

2)修改touchpad_init();添加触摸驱动初始化
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kUvVkfwD-1669538043943)(C:\Users\LEGION\AppData\Roaming\Typora\typora-user-images\image-20221127151356169.png)]](https://i-blog.csdnimg.cn/blog_migrate/74b0a01262b3a219093f1220c1245fae.png)
3、修改 touchpad_read()如图,即图一中的回调函数,获取触摸位置坐标
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gQadvVUQ-1669538043943)(C:\Users\LEGION\AppData\Roaming\Typora\typora-user-images\image-20221127151458788.png)]](https://i-blog.csdnimg.cn/blog_migrate/4405a1470faf0a9df6207c9da66f02bc.png)
三、编译常见错误
1)头文件不存在
由于直接复制的gsm文件,会有许多不存在的头文件,直接注释或删除即可。用到的头文件只有bsp_board.h;main.h;lcd.h:cst816t.h
在main.h()中可以有这些头文件
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EAzOXNMw-1669538043943)(C:\Users\LEGION\AppData\Roaming\Typora\typora-user-images\image-20221127151915861.png)]](https://i-blog.csdnimg.cn/blog_migrate/a16a18b90e11f9054f94b52287671afc.png)
2)根据报错提示,适当添加头文件包含,记得修改cmakelist
四、lvgl demo使用
1、打开menuconfig,打开demo选项
![## [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IF9YMK7b-1669538043944)(C:\Users\LEGION\AppData\Roaming\Typora\typora-user-images\image-20221127152328855.png)]](https://i-blog.csdnimg.cn/blog_migrate/7ca2cb0e4c8c1e22e53592d95991aa38.png)
直接搜索demo,根据需要打开demo。

其中widget大概率会报size不够,没有就直接忽略。修改图示size为48或者其他推荐大小

2、demo调用
1)跳转到图示头文件

2)根据打开的demo,继续跳转

3)找到目标函数,在lvgl_main中调用即可





2752

被折叠的 条评论
为什么被折叠?



