ARM · 2025年 3月 20日·50 次浏览 0

#LVGL 8.4 入门指南

1. LVGL 简介

LVGL(Light and Versatile Graphics Library)是一个轻量级的图形库,专为嵌入式系统设计。它支持多种显示驱动,能够提供平滑的 GUI 体验,并且具备丰富的组件,如按钮、滑块、图表等。

LVGL 8.4 版本在性能、渲染优化和 API 方面进行了改进,使得开发者可以更轻松地创建流畅的用户界面。

2. LVGL 8.4 的主要特性

  • 更高效的渲染引擎:减少 CPU 和 RAM 占用,提高动画和界面的流畅度。
  • 更灵活的样式系统:支持动态更改控件的外观。
  • 优化的事件处理:提高响应速度,支持更复杂的交互逻辑。
  • 更好的多显示支持:可以在多个屏幕上显示不同的内容。
  • 改进的文本渲染:支持多语言显示和更清晰的字体渲染。

3. LVGL 8.4 环境搭建

在使用 LVGL 之前,需要搭建开发环境。以下是基本步骤:

3.1 下载 LVGL

# 克隆 LVGL 源码
git clone https://github.com/lvgl/lvgl.git
cd lvgl
git checkout v8.4.0

3.2 配置 CMake

如果使用 CMake 进行编译,可以创建 CMakeLists.txt 文件:

cmake_minimum_required(VERSION 3.10)
project(lvgl_example)

add_subdirectory(lvgl)
add_executable(main main.c)
target_link_libraries(main lvgl)

3.3 运行示例代码

下面是一个简单的 LVGL 8.4 示例,创建一个基本的 GUI 界面,包括按钮和标签。

#include "lvgl.h"
#include "lv_drivers/display/monitor.h"

static void btn_event_cb(lv_event_t * e) {
    lv_obj_t * label = lv_event_get_user_data(e);
    lv_label_set_text(label, "Button Clicked!");
}

int main(void) {
    lv_init();

    lv_disp_draw_buf_t draw_buf;
    static lv_color_t buf1[LV_HOR_RES_MAX * 10];
    lv_disp_draw_buf_init(&draw_buf, buf1, NULL, LV_HOR_RES_MAX * 10);

    lv_disp_drv_t disp_drv;
    lv_disp_drv_init(&disp_drv);
    disp_drv.draw_buf = &draw_buf;
    disp_drv.flush_cb = monitor_flush;
    disp_drv.hor_res = 480;
    disp_drv.ver_res = 320;
    lv_disp_t * disp = lv_disp_drv_register(&disp_drv);

    lv_obj_t * scr = lv_scr_act();
    lv_obj_t * label = lv_label_create(scr);
    lv_label_set_text(label, "Hello LVGL!");
    lv_obj_align(label, LV_ALIGN_CENTER, 0, -20);

    lv_obj_t * btn = lv_btn_create(scr);
    lv_obj_align(btn, LV_ALIGN_CENTER, 0, 20);
    lv_obj_add_event_cb(btn, btn_event_cb, LV_EVENT_CLICKED, label);

    lv_obj_t * btn_label = lv_label_create(btn);
    lv_label_set_text(btn_label, "Click Me");
    lv_obj_center(btn_label);

    while(1) {
        lv_timer_handler();
        usleep(5000);
    }

    return 0;
}

4. 运行示例

编译并运行程序后,屏幕上会显示 "Hello LVGL!",并有一个按钮 "Click Me",点击后文本会更新为 "Button Clicked!"。

5. 结论

LVGL 8.4 是一个强大且轻量级的 GUI 库,适用于嵌入式系统。它的优化使得开发者可以更容易地创建高效的用户界面。如果你正在寻找一个灵活的嵌入式 GUI 解决方案,LVGL 8.4 值得一试!