本文章用于自己复习回顾。
一、踩的坑
外接按键,若采用引脚上下拉输入,循环扫描的方式读取按键值,外部输入设备(按键)必须要与单片机共地(GND相连),否则按键不起作用(虽然很简单,但是这个坑搞了两天才解决)。
二、LVGL外部输入设备
我是用esp32在vscode platformio环境下移植的lvgl,移动完lvgl后,由于不是触摸屏,需要采用外部输入设备,这里我采用的是按钮。在project\.pio\libdeps\esp32dev\lvgl\examples\porting路径下将lv_port_indev_template.c、lv_port_indev_template.h分别复制到lib路径下,并改名为lv_port_indev.c、lv_port_indev.h,并将两个文件的宏定义打开,如下图所示。
由于可供输入的设备有触摸、鼠标、键盘、编码器等,这里我使用的按键,为了让文件看起来不这么乱,将与其余输入设备相关的函数全注释掉(也可以直接删掉),只剩下与按键有关的4个函数。
输入设备初始化函数lv_port_indev_init不需要修改,如下图。
keypad_init函数里面放与引脚初始化有关的程序,这个我采用引脚5,17,18上拉输入。
keypad_get_key是按键扫描函数,也是最为关键的函数,引入了一个标志位,当mode为0的时候,不支持连按,当mode为1时,支持连按。
keypad_read函数是获取按键值,从而执行相应命令的函数。
这些命令的具体含义见下图。
最后只需要在setup()中调用输入设备初始化函数 lv_port_indev_init()即可。
三、提高屏幕刷新率
单Buf时,Buf尺寸至少为屏幕的1/8,较好的情况为1/4。目前对该知识点的学习尚浅,还需要继续学习。