Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
LittlevGL_LVGL
RT-Thread LVGL 触摸屏对接记录
发布于 2023-05-30 18:20:15 浏览:1117
订阅该版
[tocm] # RT-Thread LVGL 触摸屏对接记录 LVGL(轻巧而多功能的图形库)是一个免费的开放源代码图形库,它提供创建具有易于使用的图形元素,精美的视觉效果和低内存占用的嵌入式GUI所需的一切。 RT-Thread 目前已经支持 LVGL,4.1.1 版本之后(含4.1.1)移植 LVGL 的时候,只需要完善`lv_conf.h` 、`lv_port_disp.c`、 `lv_port_indev.c` 这三个文件即可,这三个文件的作用在后面介绍。 开始移植之前,需要检查使用的显示和输入设备是否已经有驱动支持,如果没有驱动支持的话需要自行对接,不对接到 RT-Thread 的设备框架,直接驱动也是可以的。 ## 准备工作 这里默认显示和触摸的驱动已经没有问题,这次移植我使用的触摸屏显示芯片为 st7796 ,触摸芯片为 gt911 。 首先可以直接复制一个已经对接好的 LVGL 文件作为模板,再在此基础上进行修改,例如 `rt-thread-master\bsp\stm32\stm32l475-atk-pandora\applications\lvgl` ,结合板卡情况修改其中的`lv_conf.h` 、`lv_port_disp.c`、 `lv_port_indev.c` 三个文件即可, `SConscript` 自行按需修改。 ## LVGL 配置文件 `lv_conf.h` 为 lVGL 配置文件,其中需要配置一些显示器的主要参数,移植时至少要配置好一下三个选项 - `LV_HOR_RES_MAX` 显示器的水平分辨率。 - `LV_VER_RES_MAX` 显示器的垂直分辨率。 - `LV_COLOR_DEPTH` 颜色深度,其取值对应如下: - 8 - RG332 - 16 - RGB565 - 32 - (RGB888和ARGB8888) ## 对接显示接口 在`lv_port_disp.c`中对接 LVGL 的显示接口,根据已有的模板,最重要的是对接以下接口 ```c /*Flush the content of the internal buffer the specific area on the display *You can use DMA or any hardware acceleration to do this operation in the background but *'lv_disp_flush_ready()' has to be called when finished.*/ static void disp_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p) { /* color_p is a buffer pointer; the buffer is provided by LVGL */ //在这里填入对应显示驱动的加载接口 //示例: //lcd_load(area->x1, area->x2, area->y1, area->y2, color_p); /*IMPORTANT!!! *Inform the graphics library that you are ready with the flushing*/ lv_disp_flush_ready(disp_drv); } ``` 在注释的地方填入自己显示驱动的对应接口即可,需要注意传入的参数顺序和类型。 还需要初始化 `lv_disp_buf_t` 和 `lv_disp_drv_t` 变量,具体可以查看:[Display interface — LVGL documentation](https://docs.lvgl.io/latest/en/html/porting/display.html) ## 对接触摸输入接口 在`lv_port_indev.c`中对接 LVGL 的输入接口,LVGL 支持多种类型的输入设备,例如触摸,键盘,编码器等,我这里使用的是触摸类型。 输入接口必须初始化 `lv_indev_drv_t` 变量,最重要的是实现其 `read_cb` 回调函数,从而获取触摸信息。其余具体配置可以查看:[Input device interface — LVGL documentation](https://docs.lvgl.io/latest/en/html/porting/indev.html) 对接完成以后,记得检查 Kconfig 以及 scons 的相关配置。可以运行 demo 进行测试基本功能,例如触摸点是否准确,点击滑动等是否正常,显示刷新是否正常等。 需要提醒大家注意的一个点:确保触摸和显示的坐标是否对应。 可以看出只要显示和输入设备的驱动没有问题,对接 LVGL 是很快的。那么行动起来,让 LVGL 运行起来吧!
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
螺丝松掉的人
这家伙很懒,什么也没写!
文章
42
回答
0
被采纳
0
关注TA
发私信
相关文章
1
LittlevGL + DMA2D 显示图案扭曲
2
LittleVGL2RTT软件包还有在维护吗,测试遇到一些问题求解
3
使用littlevgl2rtt软件包实例运行不成功,emwin正常
4
关于littlevgl2rtt软件包刷频慢的解决方案?
5
移植了littlevGUI之后,用动态 线程去跑例程会卡死
6
lvgl的字体、图片文件如何升级?
7
qemu-vexpress-a9bsp下的littvgl工程可以实现触屏操作吗?
8
LVGL控件刷新死机问题
9
在lvgl上设置一个时间显示的label,一段时间后所有控件消失。
10
littlevgl2rtt和littlevgl的pc模拟器源码不兼容吗?
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
a1012112796
20
个答案
3
次被采纳
张世争
11
个答案
3
次被采纳
踩姑娘的小蘑菇
7
个答案
3
次被采纳
rv666
9
个答案
2
次被采纳
用户名由3_15位
13
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
RTT_逍遥
1
篇文章
6
次点赞
大龄码农
1
篇文章
5
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部