LVGL 示例#

简介#

本示例演示了如何在K230平台上使用LVGL(Light and Versatile Graphics Library)图形库。LVGL是一款免费、开源的嵌入式图形库,支持丰富的图形控件、流畅的动画效果和多种输入设备,适用于MCU和MPU平台。

功能说明#

LVGL特性#

本示例展示了LVGL在K230平台上的应用:

  • 多分辨率支持:自动适配不同分辨率的显示屏

  • 触摸屏支持:集成触摸屏输入驱动

  • 丰富的UI控件:按钮、进度条、滑块、开关等

  • 响应式布局:根据屏幕尺寸自动调整控件大小和位置

  • 流畅动画:支持控件动画效果

LVGL控件#

本示例包含以下LVGL控件演示:

  • 标签(Label):显示文本信息

  • 按钮(Button):响应式按钮,支持不同颜色

  • 进度条(Bar):显示进度信息

  • 滑块(Slider):可拖动的滑块控件

  • 开关(Switch):开/关状态切换

  • 容器(Container):布局容器

显示驱动#

本示例使用K230平台的显示驱动:

  • 分辨率支持:支持最大1920x1080分辨率

  • 双缓冲:减少屏幕闪烁

  • DMA加速:使用K230的GSDMA进行图像数据传输

输入设备#

  • 触摸屏输入:支持电容/电阻触摸屏

  • 手势识别:支持点击、滑动等手势

代码位置#

Demo 源码位置:src/rtsmart/examples/3rd-party/lvgl/lvgl_basic

使用说明#

编译方法#

固件编译#

K230 RTOS SDK 根目录下使用 make menuconfig 配置编译选项,选择将LVGL示例编译进固件,然后编译固件。

独立编译#

进入LVGL示例目录,使用CMake进行编译:

cd src/rtsmart/examples/3rd-party/lvgl/lvgl_basic
mkdir build && cd build
cmake ..
make

编译成功后会生成可执行文件。

硬件准备#

  1. 准备LCD显示屏(支持MIPI DSI或RGB接口)

  2. 连接触摸屏(如果使用触摸输入)

  3. 确保显示屏和触摸屏正确连接到K230开发板

运行示例#

将编译好的可执行文件拷贝到开发板,进入存放目录后运行:

./lvgl_basic

查看结果#

程序运行后会启动LVGL图形界面,显示以下内容:

Screen: 800x480
===========================
LVGL Multi-Resolution Demo

[Button 1] [Button 2] [Button 3]

Progress Bar:
[===========>       ] 70%

Slider:
[----O----]

Switch:
[ON]

界面特性:

  • 顶部显示屏幕分辨率信息

  • 中间显示三个颜色不同的按钮

  • 下方显示进度条、滑块和开关控件

  • 所有控件支持触摸交互

用户可以通过触摸屏与界面交互:

  • 点击按钮查看响应

  • 拖动滑块调整数值

  • 切换开关状态

自定义界面#

LVGL提供了丰富的API,用户可以根据需要自定义界面:

// 创建标签
lv_obj_t* label = lv_label_create(parent);
lv_label_set_text(label, "Hello LVGL!");

// 创建按钮
lv_obj_t* btn = lv_button_create(parent);
lv_obj_t* btn_label = lv_label_create(btn);
lv_label_set_text(btn_label, "Click Me");
lv_obj_center(btn_label);

// 创建进度条
lv_obj_t* bar = lv_bar_create(parent);
lv_bar_set_value(bar, 50, LV_ANIM_OFF);

提示

LVGL配置文件(lv_conf.h)中可以调整各种参数,如内存大小、屏幕分辨率、字体选择等。有关 LVGL 的详细API和配置,请参考 LVGL官方文档

提示

LVGL需要定期调用 lv_timer_handler() 函数来刷新界面。建议在主循环中定期调用该函数。

评论列表
条评论
登录