[English]

Configuration(配置)

lv_conf.h(LV 配置头文件)

Creating lv_conf.h(创建 LV 配置头文件)

显示原文

When setting up your project for the first time, copy lvgl/lv_conf_template.h to lv_conf.h next to the lvgl folder. Change the first #if 0 to 1 to enable the file's content and set the LV_COLOR_DEPTH define to align with the color depth used by your display panel. See comments in lv_conf.h for details.

The layout of the files should look like this:

lvgl/
lv_conf.h
other files and folders in your project

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. Please notice, when defining the LV_CONF_PATH, you need to make sure it is defined as a string, otherwise a build error will be raised.

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". 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 as well, but keep in mind that the values from lv_conf.h or build settings (-D...) override the values set in Kconfig. To ignore the configs from lv_conf.h simply remove its content, or define LV_CONF_SKIP.


首次设置项目时,将 lvgl/lv_conf_template.h 文件复制到 lvgl 文件夹旁边,并命名为 lv_conf.h。将文件开头的 #if 0 改为 #if 1 以启用文件内容,并根据显示屏面板所使用的颜色深度来设置 LV_COLOR_DEPTH 这个宏定义。详情可查看 lv_conf.h 文件中的注释。

文件的布局应当如下所示:

lvgl/ lv_conf.h other files and folders in your project

或者,也可以将 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_PATH 时,你需要确保将其定义为一个字符串,否则将会引发编译错误。

如果定义了 LV_CONF_SKIP,LVGL 将不会尝试包含 lv_conf.h 文件。相反,你可以通过构建选项来传递配置定义。例如 "-DLV_COLOR_DEPTH=32 -DLV_USE_BUTTON=1"。未设置的选项将采用默认值,该默认值与 lv_conf_template.h 文件中的内容相同。

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

Configuration Settings(配置设置)

显示原文

Once the lv_conf.h file is in place, you can modify this header to configure LVGL's behavior, disable unused modules and features, adjust the size of buffers, etc.

The comments in lv_conf.h explain the meaning of each setting. Be sure to at least set 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 if you need them.

TODO: Add all things related to lv_conf.h file and its contents.


一旦 lv_conf.h 文件就位,你就可以修改这个头文件来配置 LVGL 的行为,禁用未使用的模块和特性,调整缓冲区大小等等。

lv_conf.h 文件中的注释解释了每个设置的含义。务必至少根据显示屏的颜色深度来设置 LV_COLOR_DEPTH。请注意,如果你需要示例和演示程序,那么必须要在 lv_conf.h 文件中显式地启用它们。

待办事项:添加所有与 lv_conf.h 文件及其内容相关的事项。

Multiple Instances of LVGL(LVGL 的多个实例)

显示原文

It is possible to run multiple, independent isntances of LVGL. To enable its 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 LVGL's global variables in TLS (Thread-Local Storage).

For example:

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

可以运行多个相互独立的 LVGL 实例。要启用其多实例特性,需在 lv_conf.h 文件中设置 LV_GLOBAL_CUSTOM,并使用 __threadpthread_key_tlv_global_default() 提供一个自定义函数。这样就能通过将 LVGL 的全局变量存储在线程本地存储(TLS)中,从而允许运行多个 LVGL 实例。

例如:

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

Kconfig

显示原文

TODO: Add how to use LVGL with Kconfig.


待办事项:添加如何结合 Kconfig 使用 LVGL 的相关内容。