建设部网站官网查询,手机金融界网站,上海市建设执业资格注册中心网站,wordpress伪造ip这里写目录标题 前言一、本次实验准备1、硬件2、软件 二、移植LVGL代码1、获取LVGL官方源码2、整理一下#xff0c;下载后的源码文件3、开始移植 三、移植显示驱动1、enable LVGL2、修改报错部分3、修改lv_config4、修改lv_port_disp.c文件到此步遇到的问题 Undefined symbol … 这里写目录标题 前言一、本次实验准备1、硬件2、软件 二、移植LVGL代码1、获取LVGL官方源码2、整理一下下载后的源码文件3、开始移植 三、移植显示驱动1、enable LVGL2、修改报错部分3、修改lv_config4、修改lv_port_disp.c文件到此步遇到的问题 Undefined symbol __aeabi_assert (referred from mbrtu.o).解决方法 5.显示测试c.配置定时器在定时器中断中给lvgl 设置“心跳“ 或者直接用 滴答定时器作为心脏也行法一法二 好上一步结束继续配置 main里最终是这样的 还没写完有问题 排查中。。。。 前言
记录一下我的移植过程方便以后回头翻看
一、本次实验准备
1、硬件
一块野火的STM32F429IGT6开发板和7寸的触摸屏
2、软件 官方的源码 hal库的点击进入野火官网 下载源码 把定时器中断实验的代码移植到触摸屏实验那里用于后续给lvgl提供心跳时间 如果移植后遇到Error: L6218E:在文件中添加stm32f10x_tim.c即可 我发现例程里已经有了可以直接include头文件。 将程序下载进开发板触摸显示正常即可 这款板子如果要触摸正常则要把代码中的宏修改一下 具体操作 把 #define LCD_TOUCH_IC_GT1151QM 注释掉。这样触摸屏才能有效果。 就可以画出 二、移植LVGL代码
1、获取LVGL官方源码
点击此处进入github 下载源码
此处以8.2.0为例 2、整理一下下载后的源码文件
a. 我们暂时只需要这5个文件复制到新的文件夹中b. 为减少内存的消耗我们再细一点把需要的文件单拎出来
examples文件夹中的porting文件夹
demos文件夹中的keypad_encoder文件夹、 lv_demos.h文件、lv_demos.mk 文件 c.规范化一下把文件重名把_template去掉3、开始移植
a.在野火触摸屏历程中新建一个文件夹存放lvgl的源码b.keil工程中点开魔术棒勾选C99然后把Lvgl中的文件夹都加到头文件路径中基本操作c.点开工程目录管理器添加所需的文件夹
LVGL_SRC (用来存放lvgl源码)
LVGL_POR用来配置lvgl接口文件
LVGL_DEMO用来配置lvgl官方例程
LVGL_APP用来存放用户自己的lvgl代码d.对号入座往各个文件夹里添加所需的文件提示src文件有点多。。。多到离谱。要一个个文件夹点开把.c文件都加进来src中extra文件里面有许多子文件全都要进来
文件夹src 加入到 LVGL_SRC
文件夹porting加入到LVGL_PORT包括lvgl文件夹中的 lvgl.h lv_conf.h 和 lv_demos.h
文件夹keypad_encoder添加到LVGL_DEMO三、移植显示驱动
1、enable 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暂时用不到先不修改2、修改报错部分
a.编译一下有很多个error没事我们一个个改
1我们之前规范化把文件名字修改了所以把头文件中的_template都去掉
2将…/…/去掉直接 ctrlF 全局替换一下 3、修改lv_config
我们自己添加 屏幕分辨率。#define MY_DISP_HOR_RES 800
#define MY_DISP_VER_RES 4804、修改lv_port_disp.c文件 往下拉修改分辨率把刚刚定义的宏 替换过去disp_drv.hor_res MY_DISP_HOR_RES;
disp_drv.ver_res MY_DISP_VER_RES;到此步遇到的问题 Undefined symbol __aeabi_assert (referred from mbrtu.o).
AirPressure\AirPressure.axf: Error: L6218E: Undefined symbol __aeabi_assert (referred from mbrtu.o).解决方法 5.显示测试
a.修改主函数留下必要的初始化函数b.打开使能demo的宏在lv_conf里c.配置定时器在定时器中断中给lvgl 设置“心跳“ 或者直接用 滴答定时器作为心脏也行
法一 法二
配置定时器在定时器中断中给lvgl 设置“心跳“参考这个链接野火官网的教程
在定时器中断函数中添加lvgl心跳#include “lvgl.h”/*** brief 定时器中断服务函数* param 无* retval 无*/void BASIC_TIM_IRQHandler (void){HAL_TIM_IRQHandler(TIM_TimeBaseStructure);}void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){if (htim(TIM_TimeBaseStructure)) {lv_tick_inc(1);//lvgl的1ms中断LED1_TOGGLE; //红灯周期闪烁}}好上一步结束继续配置
d.在主函数中添加lvgl相关头文件#include lvgl.h
#include lv_port_disp.h
#include lv_port_indev.h
#include lv_demo_keypad_encoder.he.在while循环中调用lvgl事务处理函数lv_task_handler(); // lvgl的事务处理f.在main中添必要函数lv_init();
lv_port_disp_init();//lvgl显示接口初始化放在lvgl_init()的后面
lv_port_indev_init();//lvgl输入接口初始化放在lvgl_init()的后面
lv_demo_keypad_encoder();g.将堆栈改大一点main里最终是这样的 还没写完有问题 排查中。。。。