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);
}


浙公网安备 33010602011771号