系列文章目录
目录
系列文章目录
章目录
目标
一、认识端口文件
二、使能 lv_port_indev.c
三、接口函数
1.输入设备初始化
四、Main函数
五、过程中的疑难杂症
1.内存不足
2、LCD白屏
五、效果
总结
目标
在显示的基础上添加触摸输入
提示:以下是本篇文章正文内容,下面案例可供参考
一、认识端口文件
这两个是输入设备的端口文件,这里我改过文件名(原文件名叫 lv_port_indev_template)
只需要把相应的触摸屏驱动函数添加到文件里的函数里即可驱动
二、使能 lv_port_indev.c
首先把 文件使能
在 lv_port_indev.c 的顶部 (红圈),设置为#if 1
三、接口函数
函数均在lv_port_indev.c
1.输入设备初始化
void lv_port_indev_init(void)
用于初始化你的输入设备 (触摸屏、按键、鼠标键盘等等)
该函数结构还是比较分明的
可选择你需要的输入设备裁剪 (这里只用了触摸屏所以,其他全部注释掉,我用的#if 0 )
下面主要看lv_port_indev_init(void)的触摸屏部分
我们主要做的就是实现画红线的函数
touchpad_init(); //初始化你的触摸模块
再touchpad_init函数添加你的触摸模块初始化函数
/*Initialize your touchpad*/
static void touchpad_init(void)
{
/*Your code comes here*//*这里放你的模块初始化代码**/
}
touchpad_read() //回调函数
主要功能是获取触摸屏状态和按下坐标,LVGL会自动定期调用此函数
下面是函数原形
需要修改的是画红线的2个函数
static bool touchpad_is_pressed(void) //返回触摸状态 按下返回true 否则false
/*Return true is the touchpad is pressed*/
static bool touchpad_is_pressed(void)
{
/*Your code comes here*/
/*这里添加判断你的触摸状态的代码*/
return false;
}
例子:
用的野火的触摸屏库函数
/*Return true is the touchpad is pressed*/
static bool touchpad_is_pressed(void)
{
/*Your code comes here*/
if(XPT2046_TouchDetect()==TOUCH_PRESSED) return true; /*按下返回真*/
return false;
}
touchpad_get_xy(lv_coord_t * x, lv_coord_t * y) //获取触摸屏坐标
/*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) = your_x;
(*y) = your_y;
}
例子:
野火的获取坐标函数
添加到上面的源码
/*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*/
XPT2046_Get_TouchedPoint(&cinfo1,strXPT2046_TouchPara); //获取坐标
(*x) = cinfo1.x; //把获取的值给LVGL
(*y) = cinfo1.y;
}
四、Main函数
最后直接在main函数 调用
lv_port_indev_init(void)
即可
五、过程中的疑难杂症
1.内存不足
解决
再魔术棒c/c++ 把箭头指向的配置项 配置为Level3 (原来是Level0 )
也可以改显示缓冲区的大小
更改buf_1大小
以下是野火例程的问题
2、LCD白屏
好像是LCD初始化太快了
结果仿真调试 发现逐条运行时 REG_Config 函数的没有问题
但全速运行时会有问题 ,所以我加了2条延时函数
五、效果
添加了部件如圆弧 按键 ,如果你完成了输入设备的配置 ,你可以对你的控件进行操作
滑动圆弧文章来源:https://www.toymoban.com/news/detail-672303.html
总结
好多bug、太痛苦了文章来源地址https://www.toymoban.com/news/detail-672303.html
到了这里,关于LVGL触摸移植——stm32野火F103的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!