[English]

Set up a project(设置项目)

Get the library(获取LVGL图形库)

显示原文

LVGL is available on GitHub: https://github.com/lvgl/lvgl.

You can clone it or Download the latest version of the library from GitHub.


LVGL 可在 GitHub 上获得:https://github.com/lvgl/lvgl

您可以克隆它或从 GitHub 下载 最新版本的库。

Add lvgl to your project(将 lvgl 添加到您的项目)

显示原文

The graphics library itself is the lvgl directory. It contains a couple of folders but to use lvgl you only need the .c and .h files in the src folder.


图形库本身就是 lvgl 目录。它包含一个几个文件夹,但要使用 lvgl ,您只需要 src 文件夹中的 .c and .h 文件。

Automatically add files(自动添加文件)

显示原文

If your IDE automatically adds the files from the folders copied to the project folder (as Eclipse or VSCode does), you can simply copy the lvgl folder as it is into your project.


如果你的 IDE 会自动将复制到的文件夹中的文件添加到 project 文件夹(就像 Eclipse 或 VSCode 一样),您只需将 lvgl 文件夹原封不动地复制到您的项目中即可。

Make and CMake

显示原文

LVGL also supports make and CMake build systems out of the box. To add LVGL to your Makefile based build system add these lines to your main Makefile:

LVGL_DIR_NAME ?= lvgl     #The name of the lvgl folder (change this if you have renamed it)
LVGL_DIR ?= ${shell pwd}  #The path where the lvgl folder is
include $(LVGL_DIR)/$(LVGL_DIR_NAME)/lvgl.mk

For integration with CMake take a look this section of the Documentation.


LVGL 还支持 makeCMake 构建系统,开箱即用。 要将 LVGL 添加到基于 Makefile 的构建系统中,请将以下行添加到您的 main Makefile:

LVGL_DIR_NAME ?= lvgl     #The name of the lvgl folder (change this if you have renamed it)
LVGL_DIR ?= ${shell pwd}  #The path where the lvgl folder is
include $(LVGL_DIR)/$(LVGL_DIR_NAME)/lvgl.mk

要与 CMake 集成,请查看 文档 的这一部分。

Other platforms and tools(其它平台和工具)

显示原文

The Get started section contains many platform specific descriptions e.g. for ESP32, Arduino, NXP, RT-Thread, NuttX, etc.


入门 部分包含许多平台具体描述,例如 ESP32、Arduino、NXP、RT-Thread、NuttX、 等。

Demos and Examples(演示和示例)

显示原文

The lvgl folder also contains an examples and a demos folder. If you needed to add the source files manually to your project, you can do the same with the source files of these two folders too. make and CMake handles the examples and demos, so no extra action required in these cases.


lvgl 文件夹还包含一个 examples 和一个 demos 文件夹。如果您需要手动将源文件添加到您的项目中, 您也可以对这两个文件夹的源文件执行相同的操作。 makeCMake 会处理示例和演示,所以在这些情况下不需要额外的操作。

Configuration file(修改配置文件)

显示原文

There is a configuration header file for LVGL called lv_conf.h. You can modify this header to set the library's basic behavior, disable unused modules and features, adjust the size of buffers in compile-time, etc.

To get lv_conf.h copy lvgl/lv_conf_template.h next to the lvgl directory and rename it to lv_conf.h. Open the file and change the #if 0 at the beginning to #if 1 to enable its content. So the layout of the files should look like this:

|-lvgl
|-lv_conf.h
|-other files and folders

Comments in the config file explain the meaning of the options. Be sure to set at least LV_COLOR_DEPTH according to your display's color depth. Note that, the examples and demos explicitly need to be enabled in lv_conf.h.

Alternatively, lv_conf.h can be copied to another place but then you should add the LV_CONF_INCLUDE_SIMPLE define to your compiler options (e.g. -DLV_CONF_INCLUDE_SIMPLE for GCC compiler) and set the include path manually (e.g. -I../include/gui). In this case LVGL will attempt to include lv_conf.h simply with #include "lv_conf.h".

You can even use a different name for lv_conf.h. The custom path can be set via the LV_CONF_PATH define. For example -DLV_CONF_PATH="/home/joe/my_project/my_custom_conf.h". If this define is set LV_CONF_SKIP is assumed to be 0.

If LV_CONF_SKIP is defined, LVGL will not try to include lv_conf.h. Instead you can pass the config defines using build options. For example "-DLV_COLOR_DEPTH=32 -DLV_USE_BUTTON=1". The unset options will get a default value which is the same as the content of lv_conf_template.h.

LVGL also can be used via Kconfig and menuconfig. You can use lv_conf.h together with Kconfig too, but keep in mind that the value from lv_conf.h or build settings (-D...) overwrite the values set in Kconfig. To ignore the configs from lv_conf.h simply remove its content, or define LV_CONF_SKIP.

To enable multi-instance feature, set LV_GLOBAL_CUSTOM in lv_conf.h and provide a custom function to lv_global_default() using __thread or pthread_key_t. It will allow running multiple LVGL instances by storing the global variables in TLS (Thread Local Storage).

For example:


LVGL 有一个名为 **lv_conf.h** 的配置头文件。你可以修改这个头文件来设置库的基本行为、禁用未使用的模块和功能、在编译时调整缓冲区的大小等等。

要获取 lv_conf.h,将 lvgl/lv_conf_template.h 复制到 lvgl 目录旁边,并将其重命名为 lv_conf.h。打开文件并将开头的 #if 0 更改为 #if 1 以启用其内容。因此,文件的布局应如下所示:

|-lvgl
|-lv_conf.h
|-other files and folders

配置文件中的注释解释了这些选项的含义。一定要根据你的显示器的颜色深度至少设置 LV_COLOR_DEPTH 。请注意,示例和演示需要在 lv_conf.h 中明确启用。

或者, lv_conf.h 可以复制到另一个地方,但随后你应该将 LV_CONF_INCLUDE_SIMPLE 定义添加到编译器中选项(例如对于GCC编译器使用 -DLV_CONF_INCLUDE_SIMPLE ),并手动包含路径(例如 -I../include/gui )。在这种情况下, LVGL 将尝试简单地使用 #include "lv_conf.h" 来包含 lv_conf.h

您甚至可以为 lv_conf.h 使用不同的名称。自定义路径可以通过 LV_CONF_PATH 定义进行设置。例如 -DLV_CONF_PATH="/home/joe/my_project/my_custom_conf.h"。如果设置了这个定义,那么 “LV_CONF_SKIP” 被假定为 0。

如果 LV_CONF_SKIP 已定义,则 LVGL 不会尝试包含 lv_conf.h。相反,您可以使用 build 传递配置定义选项。例如 "-DLV_COLOR_DEPTH=32 -DLV_USE_BUTTON=1"。未设置 options 将获得一个默认值,该值与 lv_conf_template.h 的内容相同。

LVGL 也可以通过 Kconfigmenuconfig 使用。您也可以 lv_conf.h 与 Kconfig 一起使用,但请记住,来自 lv_conf.h 或 构建设置 (-D...) 的值会覆盖在 Kconfig 中设置的值。要忽略来自lv_conf.h配置,只需删除其内容,或定义 LV_CONF_SKIP

要启用多实例功能,需要在 lv_conf.h 文件中设置 LV_GLOBAL_CUSTOM , 并使用 __threadpthread_key_tlv_global_default() 提供自定义函数。 这将通过在TLS中存储全局变量来允许运行多个 LVGL 实例。

例如:

lv_global_t * lv_global_default(void)
{
  static __thread lv_global_t lv_global;
  return &lv_global;
}

Initialization(初始化)

显示原文

To use the graphics library you have to initialize it and setup required components. The order of the initialization is:

  1. Call lv_init().

  2. Initialize your drivers.

  3. Register the display and input devices drivers in LVGL. Learn more about Display and Input device registration.

  4. Call lv_tick_inc(x) every x milliseconds in an interrupt to report the elapsed time to LVGL. Learn more.

  5. Call lv_timer_handler() every few milliseconds to handle LVGL related tasks. Learn more.


要使用图形库,您必须对其进行初始化并设置所需的组件。初始化的顺序为:

  1. 调用 lv_init()

  2. 初始化您的驱动程序。

  3. 在 LVGL 中注册显示和输入设备驱动程序。了解更多关于 显示输入设备 注册的信息。

  4. 在中断中每隔 x 毫秒调用 lv_tick_inc(x) 以向LVGL报告经过的时间。 了解更多

  5. 每隔几毫秒调用`lv_timer_handler` 来处理LVGL相关的任务。 了解更多