Esp32_Link调试笔记(Vol.2)
上回书说到屏幕成功显示字符串,接下来讲讲LVGL输入设备的定义。
完整代码 https://github.com/XiHuanMY/esp32-link
第二章 添加输入设备
原项目输入包括触屏和编码器,我这里因为偷懒将原项目编码器换成了上下拨的按键。
LVGL的输入有很多种就不说了,我只用了两种。
按照lvgl/examples/porting/lv_port_indev_template.c所说
/Copy this file as "lv_port_indev.c" and set this value to "1" to enable content/
接下来我们在复制出来的lv_port_indev.c和lv_port_indev.h中操作
目录结构如图
0. main.c修改
在屏幕初始化后添加lv_port_indev_init();
2.添加I2C控制
触摸IC是i2c控制的所以先把i2c驱动加上。驱动文件来自于github上lvgl/lvgl_esp32_drivers,按需修改i2c_manager.h中宏定义
点击查看代码
#define CONFIG_I2C_MANAGER_0_SDA 18 #define CONFIG_I2C_MANAGER_0_SCL 21
2.关键函数
这里只有四个函数需要自己实现分别是两个硬件的初始化和回调函数,具体内容请看项目中对应文件。
点击查看代码
static void keypad_init(void); static void keypad_read(lv_indev_t * indev_drv, lv_indev_data_t * data); static void touch_init(void); static void touch_read(lv_indev_t * indev_drv, lv_indev_data_t * data); void lv_port_indev_init(void) { keypad_init(); touch_init(); /*Register a encoder input device*/ indev_keypad = lv_indev_create(); lv_indev_set_type(indev_keypad, LV_INDEV_TYPE_KEYPAD); lv_indev_set_read_cb(indev_keypad, keypad_read); /*Register a touch input device*/ indev_touch = lv_indev_create(); lv_indev_set_type(indev_touch, LV_INDEV_TYPE_POINTER); lv_indev_set_read_cb(indev_touch, touch_read); group = lv_group_create(); lv_indev_set_group(indev_keypad, group); lv_group_set_default(group); }
本文作者:一般摸鱼。
本文链接:https://www.cnblogs.com/moyuu/p/18723774
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步