做博客网站用什么模板,蝌蚪窝一个释放做网站,正规的网站建设专业公司,一个网站的成功LVGL源码移植 ■ LVGL源码移植一#xff1a;下载LVGL源码二#xff1a;修改LVGL文件夹1: 将这5个文件#xff0c;复制到一个新的文件夹2: 简化文件#xff0c;减少内存消耗#xff08;去除不必要的文件#xff09;3: 为了规范化#xff0c;我们将下列文件进行重命名 三下载LVGL源码二修改LVGL文件夹1: 将这5个文件复制到一个新的文件夹2: 简化文件减少内存消耗去除不必要的文件3: 为了规范化我们将下列文件进行重命名 三开始移植1: 在之前修改的触摸屏例程中新建LVGL文件夹将修改后的文件复制进去。2: 在MDK中包括LVGL的头文件和设置c99模式3: 创建4个新的文件 LVGL_SRCLVGL_PORLVGL_DEMOLVGL_APP4: 工程中加入lvgl源码4.1 LVGL_SRC中添加文件4.2 LVGL_POR中添加文件4.3 LVGL_DEMO中添加文件 四移植显示驱动4.1 使能LVGL4.2 代码改错4.3 修改lv_conf.h文件4.4 修改lv_port_disp.c文件4.5 显示测试 五移植触摸驱动5.1 修改lv_port_indev函数5.2 再修改触摸状态返回和坐标返回5.3 在主函数添加触摸按键扫描5.4 下载验证 ■ 视频链接 ■ LVGL源码移植
一下载LVGL源码
LVGL源码 我们以选择v8.2.0为例选择8.2.0下载
二修改LVGL文件夹
1: 将这5个文件复制到一个新的文件夹
我们只需要关注这5个文件即可把他们复制到一个新的文件夹里面
2: 简化文件减少内存消耗去除不必要的文件
为了减少内存消耗打开examples文件将port文件复制出来打开demos文件将keypad_encoder lv_demos lv_demo.lv_demos.mk 文件复制出来我们只需要移植下面的文件即可
3: 为了规范化我们将下列文件进行重命名
将lv_conf_template.h 文件改为 lv_conf.h配置相关将port文件里
lv_port_disp_template.c 文件改为 lv_port_disp.c 显示相关
lv_port_disp_template.h 文件改为 lv_port_disp.h显示相关
lv_port_fs_template.c 文件改为 lv_port_fs.c文件系统相关
lv_port_fs_template.c 文件改为 lv_port_fs.h文件系统相关
lv_port_indev_template.c 文件改为 lv_port_indev.c输入设备相关
lv_port_indev_template.c 文件改为 lv_port_indev.c输入设备相关
三开始移植
1: 在之前修改的触摸屏例程中新建LVGL文件夹将修改后的文件复制进去。 要复制到LVGL的文件如下
2: 在MDK中包括LVGL的头文件和设置c99模式 3: 创建4个新的文件 LVGL_SRCLVGL_PORLVGL_DEMOLVGL_APP
LVGL_SRC (用来存放lvgl源码) LVGL_POR用来配置lvgl接口文件 LVGL_DEMO用来配置lvgl官方例程 LVGL_APP用来存放用户自己的lvgl代码
4: 工程中加入lvgl源码
4.1 LVGL_SRC中添加文件
将lvgl中src文件全部都加进LVGL_SRC文件里 提示src文件有点多要一个一个文件点开将里面的使用.c文件加进来src中extra文件里面有许多子文件要多留个心眼小心移植
4.2 LVGL_POR中添加文件
将lvgl中porting 中.c .h文件全都加进LVGL_POR文件中 将lvgl.h lv_conf.h lv_demos.h也加进LVGL_POR中
4.3 LVGL_DEMO中添加文件
将keypad_encoder的文件加入到LVGL_DEMO
四移植显示驱动
4.1 使能LVGL
将 lv_port_disp.c 、 lv_port_disp.h 、 lv_port_indev.c 、 lv_port_indev.h、 lv_conf.h中if 0改成 if 1 lv_port_fs.c暂时用不到先不修改
4.2 代码改错
我们编译一下有很多个error不过问题我们一个一个来修改 1将_template去掉因为我们之前有修改过源文件 2将…/…/去掉 3将lvgl/lvgl.h改成 利用ctrlf使用替换功能可快速进行修改 如果有_sys_exit函数记得加上void
4.3 修改lv_conf.h文件
添加屏幕的分辨率 #define MY_DISP_HOR_RES 480 #define MY_DISP_VER_RES 320
4.4 修改lv_port_disp.c文件
将lv_port_disp_init函数里的2和3方式注释掉 添加上面修改的分辨率 修改disp_flush显示函数(记得包括LCD显示的头文件进来)
4.5 显示测试
修改主函数删除之前的显示函数只留下mian函数 打开使能demo的宏在lv_conf里 在定时器中断函数中添加lvgl心跳#include “lvgl.h”
//定时器3中断服务程序
void TIM3_IRQHandler(void) //TIM3中断
{if (TIM_GetITStatus(TIM3, TIM_IT_Update) ! RESET) //检查TIM3更新中断发生与否{TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx更新中断标志 lv_tick_inc(1);//lvgl的1ms中断LED1!LED1;}
}
在主函数中添加lvgl相关头文件
#include lvgl.h
#include lv_port_disp.h
#include lv_port_indev.h
#include lv_demo_keypad_encoder.h
在主函数中添加初始化函数
lv_init();
lv_port_disp_init(); // lvgl显示接口初始化,放在lv_init()的后面
lv_port_indev_init(); // lvgl输入接口初始化,放在lv_init()的后面
lv_demo_keypad_encoder();在主函数中添加初始化函数
lv_init();
lv_port_disp_init(); // lvgl显示接口初始化,放在lv_init()的后面
lv_port_indev_init(); // lvgl输入接口初始化,放在lv_init()的后面
lv_demo_keypad_encoder();在while1调用lvgl事务处理函数 lv_task_handler(); // lvgl的事务处理修改后的主函数 将堆栈改大一点 下载程序显示正常记得将屏幕改成横屏显示
五移植触摸驱动
5.1 修改lv_port_indev函数
将lv_port_indev_init函数里的其他输入设备注释掉留下触摸
void lv_port_indev_init(void)
{static lv_indev_drv_t indev_drv;/*------------------* Touchpad* -----------------*//*Initialize your touchpad if you have*/touchpad_init();/*Register a touchpad input device*/lv_indev_drv_init(indev_drv);indev_drv.type LV_INDEV_TYPE_POINTER;indev_drv.read_cb touchpad_read;indev_touchpad lv_indev_drv_register(indev_drv);
}5.2 再修改触摸状态返回和坐标返回
/*Return true is the touchpad is pressed*/
static bool touchpad_is_pressed(void)
{/*Your code comes here*/if(PEN0)//有按键按下{return true; // 有触摸操作 返回true}return false; // 没有触摸操作 返回false
}/*Get the x and y coordinates if the touchpad is pressed*/
/*Get the x and y coordinates if the touchpad is pressed*/
static void touchpad_get_xy(lv_coord_t * x, lv_coord_t * y)
{/*Your code comes here*/(*x) tp_dev.x[0]; // 赋值x坐标(*y) tp_dev.y[0]; // 赋值y坐标
}5.3 在主函数添加触摸按键扫描
tp_dev.scan(0);5.4 下载验证 ■ 视频链接
快速入门LVGL