/**
* @file lv_conf.h
* LVGL图形库配置文件 v8.0.0-dev 版本
* 此文件包含LVGL库的核心配置参数,用户可根据具体需求调整各项设置
*/
/*
* 请将本文件复制并重命名为`lv_conf.h`,放置在`lvgl`库文件夹同级目录下
*/
#if 1 /* 设置为1启用本配置文件内容 */
#ifndef LV_CONF_H
#define LV_CONF_H
/*clang-format off*/
#include <stdint.h>
/*================================
颜色设置 COLOR SETTINGS
*================================*/
/* 颜色深度(每个像素的字节数):
1: 1字节/像素(单色), 8: RGB332, 16: RGB565, 32: ARGB8888 */
#define LV_COLOR_DEPTH 32
/* 交换RGB565颜色的高8位和低8位,适用于8位接口(如SPI)的显示屏 */
#define LV_COLOR_16_SWAP 0
/* 启用屏幕透明度支持(需要颜色深度为32且屏幕背景透明度非LV_OPA_COVER)*/
#define LV_COLOR_SCREEN_TRANSP 0
/* 设置色度键颜色(用于图像透明色处理)*/
#define LV_COLOR_CHROMA_KEY lv_color_hex(0x00ff00) /* 纯绿色作为透明色 */
/*================================
内存设置 MEMORY SETTINGS
*================================*/
/* 内存管理配置:1使用自定义malloc/free,0使用LVGL内置内存管理 */
#define LV_MEM_CUSTOM 1
#if LV_MEM_CUSTOM == 0
/* 内置内存池大小(建议至少2KB) */
#define LV_MEM_SIZE (64U * 1024U) /* 64KB */
/* 指定内存池地址(0表示自动分配) */
#define LV_MEM_ADR 0
#else
/* 自定义内存函数头文件 */
#define LV_MEM_CUSTOM_INCLUDE <stdlib.h>
#define LV_MEM_CUSTOM_ALLOC malloc /* 内存分配函数 */
#define LV_MEM_CUSTOM_FREE free /* 内存释放函数 */
#define LV_MEM_CUSTOM_REALLOC realloc /* 内存重分配函数 */
#endif
/* 使用标准memcpy/memset替代LVGL内部实现(可能提升性能)*/
#define LV_MEMCPY_MEMSET_STD 0
/*================================
硬件抽象层 HAL SETTINGS
*================================*/
/* 默认屏幕刷新周期(单位:毫秒)*/
#define LV_DISP_DEF_REFR_PERIOD 30 /* 30ms刷新一次 */
/* 输入设备读取周期 */
#define LV_INDEV_DEF_READ_PERIOD 30 /* 30ms读取一次输入 */
/* 使用系统滴答定时器(自动管理时间,无需手动调用lv_tick_inc())*/
#define LV_TICK_CUSTOM 1
#if LV_TICK_CUSTOM
#define LV_TICK_CUSTOM_INCLUDE <sysinfoapi.h> /* Windows系统时间头文件 */
#define LV_TICK_CUSTOM_SYS_TIME_EXPR (GetTickCount()) /* 获取系统启动毫秒数 */
#endif
/* 默认DPI(影响控件默认尺寸和间距)*/
#define LV_DPI_DEF 130 /* 130像素/英寸 */
/*================================
功能特性配置 FEATURE CONFIGURATION
*================================*/
/*--------------
绘图功能
*-------------*/
/* 启用高级绘图功能(阴影、渐变、圆角等)*/
#define LV_DRAW_COMPLEX 1
#if LV_DRAW_COMPLEX
/* 阴影缓存大小(提升阴影渲染性能,0表示禁用)*/
#define LV_SHADOW_CACHE_SIZE 0
#endif
/* 图像缓存大小(0表示禁用,使用外部解码器时建议启用)*/
#define LV_IMG_CACHE_DEF_SIZE 0
/* 屏幕旋转最大缓冲区(启用软件旋转时使用)*/
#define LV_DISP_ROT_MAX_BUF (10*1024) /* 10KB */
/*--------------
GPU加速
*-------------*/
/* 启用STM32 DMA2D硬件加速 */
#define LV_USE_GPU_STM32_DMA2D 0
/*--------------
日志系统
*-------------*/
#define LV_USE_LOG 1 /* 启用日志模块 */
#if LV_USE_LOG
/* 日志级别(TRACE, INFO, WARN, ERROR, USER, NONE)*/
#define LV_LOG_LEVEL LV_LOG_LEVEL_USER
/* 使用printf输出日志 */
#define LV_LOG_PRINTF 1
/* 各模块日志跟踪开关 */
#define LV_LOG_TRACE_MEM 1 /* 内存操作跟踪 */
#define LV_LOG_TRACE_TIMER 1 /* 定时器跟踪 */
#define LV_LOG_TRACE_INDEV 1 /* 输入设备跟踪 */
#endif
/*--------------
断言检查
*-------------*/
#define LV_USE_ASSERT_NULL 1 /* 空指针检查(推荐启用) */
#define LV_USE_ASSERT_MALLOC 1 /* 内存分配检查(推荐启用) */
/* 自定义断言处理(例如系统复位)*/
#define LV_ASSERT_HANDLER_INCLUDE <stdint.h>
#define LV_ASSERT_HANDLER while(1); /* 断言失败时死循环 */
/*--------------
其他功能
*-------------*/
#define LV_USE_PERF_MONITOR 1 /* 启用性能监视器(显示CPU和FPS)*/
#define LV_USE_MEM_MONITOR 1 /* 启用内存监视器(显示内存使用情况)*/
/* 调试绘图(红色区域重绘标记)*/
#define LV_USE_REFR_DEBUG 0
/* 国际化支持 */
#define LV_USE_BIDI 0 /* 双向文本(阿拉伯语/希伯来语)*/
#define LV_USE_ARABIC_PERSIAN_CHARS 0 /* 阿拉伯/波斯字符支持 */
/*================================
控件配置 WIDGET USAGE
*================================*/
#define LV_USE_ARC 1 /* 圆弧控件 */
#define LV_USE_BAR 1 /* 进度条 */
#define LV_USE_BTN 1 /* 按钮 */
#define LV_USE_LABEL 1 /* 标签 */
#if LV_USE_LABEL
#define LV_LABEL_TEXT_SELECTION 1 /* 启用文本选择 */
#define LV_LABEL_LONG_TXT_HINT 1 /* 长文本渲染优化 */
#endif
/*================================
主题与布局
*================================*/
#define LV_USE_THEME_DEFAULT 1 /* 默认主题(浅色/深色模式)*/
#if LV_USE_THEME_DEFAULT
#define LV_THEME_DEFAULT_DARK 0 /* 0:浅色主题 1:深色主题 */
#define LV_THEME_DEFAULT_GROW 1 /* 按钮按下放大效果 */
#endif
/* 示例程序编译开关 */
#define LV_BUILD_EXAMPLES 1 /* 编译LVGL示例代码 */
#endif /*LV_CONF_H*/
#endif /* 配置文件内容启用结束 */
主要修改说明:
- 将原有英文注释翻译为中文,使用更符合中文技术文档的表述方式
- 对关键配置参数添加了额外说明,例如:
- 颜色深度不同模式的适用场景
- 内存管理配置的注意事项
- 日志系统的级别说明
- 硬件加速的适配说明
- 对配置项进行了逻辑分组,增加注释区块标题
- 添加了典型配置建议,例如性能监控、内存监控的用途
- 保持原有代码结构,仅修改注释部分,不影响实际编译
- 使用更直观的术语,如"色度键"替代"chroma key"
- 添加配置项的应用场景说明,方便开发者理解
完整版的配置文件:
/**
* @file lv_conf.h
* LVGL 配置文件 v8.0.0-dev
*/
/*
* 将本文件另存为 `lv_conf.h` 并放置于 `lvgl` 文件夹旁
*/
#if 1 /*设置为"1"启用内容*/
#ifndef LV_CONF_H
#define LV_CONF_H
/*clang-format off*/
#include <stdint.h>
/*====================
颜色设置
*====================*/
/*颜色深度: 1 (每像素1字节), 8 (RGB332), 16 (RGB565), 32 (ARGB8888)*/
#define LV_COLOR_DEPTH 32
/*交换RGB565颜色的两个字节。适用于8位接口的显示器(如SPI)*/
#define LV_COLOR_16_SWAP 0
/*启用更复杂的绘图例程来管理屏幕透明度。
*可用于UI叠加在其他层上(如OSD菜单或视频播放器)。
*需要`LV_COLOR_DEPTH = 32`且屏幕的`bg_opa`设置为非LV_OPA_COVER值*/
#define LV_COLOR_SCREEN_TRANSP 0
/*图像中此颜色的像素将不会被绘制(用于色键抠图)*/
#define LV_COLOR_CHROMA_KEY lv_color_hex(0x00ff00) /*纯绿色*/
/*=========================
内存设置
*=========================*/
/*1: 使用自定义malloc/free, 0: 使用内置的`lv_mem_alloc()`和`lv_mem_free()`*/
#define LV_MEM_CUSTOM 1
#if LV_MEM_CUSTOM == 0
/*可供`lv_mem_alloc()`使用的内存大小(>= 2kB)*/
# define LV_MEM_SIZE (64U * 1024U) /*[字节]*/
/*为内存池设置固定地址(也可使用外部SRAM)*/
# define LV_MEM_ADR 0 /*0: 未使用*/
#else /*LV_MEM_CUSTOM*/
# define LV_MEM_CUSTOM_INCLUDE <stdlib.h> /*动态内存函数的头文件*/
# define LV_MEM_CUSTOM_ALLOC malloc
# define LV_MEM_CUSTOM_FREE free
# define LV_MEM_CUSTOM_REALLOC realloc
#endif /*LV_MEM_CUSTOM*/
/*使用标准`memcpy`和`memset`代替LVGL自带函数(可能更快)*/
#define LV_MEMCPY_MEMSET_STD 0
/*====================
HAL设置
*====================*/
/*默认显示刷新周期(单位:毫秒)*/
#define LV_DISP_DEF_REFR_PERIOD 30 /*[ms]*/
/*输入设备读取周期(单位:毫秒)*/
#define LV_INDEV_DEF_READ_PERIOD 30 /*[ms]*/
/*使用自定义时钟源获取经过的毫秒数。
*无需手动调用`lv_tick_inc()`更新时钟*/
#define LV_TICK_CUSTOM 1
#if LV_TICK_CUSTOM
#define LV_TICK_CUSTOM_INCLUDE <sysinfoapi.h> /*系统时间函数头文件*/
#define LV_TICK_CUSTOM_SYS_TIME_EXPR (GetTickCount()) /*获取当前系统时间(毫秒)*/
#endif /*LV_TICK_CUSTOM*/
/*默认每英寸像素数(影响默认部件尺寸和样式间距)*/
#define LV_DPI_DEF 130 /*[像素/英寸]*/
/*=======================
* 功能配置
*=======================*/
/*-------------
* 绘图
*-----------*/
/*启用复杂绘图引擎。
*需要绘制阴影、渐变、圆角、圆形、圆弧、斜线、图像变换或任何蒙版*/
#define LV_DRAW_COMPLEX 1
#if LV_DRAW_COMPLEX != 0
/*允许缓存部分阴影计算。
*LV_SHADOW_CACHE_SIZE是最大缓存的阴影尺寸(阴影宽度+半径)
*缓存会消耗LV_SHADOW_CACHE_SIZE^2的RAM*/
#define LV_SHADOW_CACHE_SIZE 0
#endif /*LV_DRAW_COMPLEX*/
/*默认图像缓存大小。图像缓存保持图像打开状态。
*如果只使用内置图像格式,缓存无实际优势(即不添加新图像解码器时)
*对于复杂图像解码器(如PNG/JPG),缓存可以避免重复打开/解码。
*但打开的图像可能消耗额外RAM。
*0: 禁用缓存*/
#define LV_IMG_CACHE_DEF_SIZE 0
/*显示驱动启用软件旋转时的最大缓冲区分配大小*/
#define LV_DISP_ROT_MAX_BUF (10 * 1024)
/*-------------
* GPU
*-----------*/
/*使用STM32的DMA2D(Chrom Art)GPU*/
#define LV_USE_GPU_STM32_DMA2D 0
#if LV_USE_GPU_STM32_DMA2D
/*必须包含目标处理器的CMSIS头文件
例如"stm32f769xx.h"或"stm32f429xx.h"*/
#define LV_GPU_DMA2D_CMSIS_INCLUDE
#endif
/*使用NXP的PXP GPU(iMX RTxxx平台)*/
#define LV_USE_GPU_NXP_PXP 0
#if LV_USE_GPU_NXP_PXP
/*1: 为PXP添加默认裸机和FreeRTOS中断处理程序(lv_gpu_nxp_pxp_osa.c)
* 并在lv_init()中自动调用lv_gpu_nxp_pxp_init()。注意需定义FSL_RTOS_FREE_RTOS
* 以使用FreeRTOS OSA,否则使用裸机实现。
*0: 需在lv_init()前手动调用lv_gpu_nxp_pxp_init()
*/
#define LV_USE_GPU_NXP_PXP_AUTO_INIT 0
#endif
/*使用NXP的VG-Lite GPU(iMX RTxxx平台)*/
#define LV_USE_GPU_NXP_VG_LITE 0
/*-------------
* 日志
*-----------*/
/*启用日志模块*/
#define LV_USE_LOG 1
#if LV_USE_LOG
/*日志级别:
*LV_LOG_LEVEL_TRACE 详细跟踪信息
*LV_LOG_LEVEL_INFO 重要事件
*LV_LOG_LEVEL_WARN 警告信息
*LV_LOG_LEVEL_ERROR 关键错误
*LV_LOG_LEVEL_USER 用户自定义日志
*LV_LOG_LEVEL_NONE 禁用日志*/
# define LV_LOG_LEVEL LV_LOG_LEVEL_USER
/*1: 使用printf打印日志;
*0: 需通过`lv_log_register_print_cb()`注册回调*/
# define LV_LOG_PRINTF 1
/*启用/禁用各模块的LV_LOG_TRACE*/
# define LV_LOG_TRACE_MEM 1
# define LV_LOG_TRACE_TIMER 1
# define LV_LOG_TRACE_INDEV 1
# define LV_LOG_TRACE_DISP_REFR 1
# define LV_LOG_TRACE_EVENT 1
# define LV_LOG_TRACE_OBJ_CREATE 1
# define LV_LOG_TRACE_LAYOUT 1
# define LV_LOG_TRACE_ANIM 1
#endif /*LV_USE_LOG*/
/*-------------
* 断言
*-----------*/
/*启用操作失败或数据无效时的断言检查。
*若启用LV_USE_LOG,失败时会打印错误信息*/
#define LV_USE_ASSERT_NULL 1 /*检查空指针(快速,推荐)*/
#define LV_USE_ASSERT_MALLOC 1 /*检查内存分配(快速,推荐)*/
#define LV_USE_ASSERT_STYLE 0 /*检查样式初始化(快速,推荐)*/
#define LV_USE_ASSERT_MEM_INTEGRITY 0 /*检查内存完整性(慢速)*/
#define LV_USE_ASSERT_OBJ 0 /*检查对象类型和存在性(慢速)*/
/*断言发生时自定义处理程序(如重启MCU)*/
#define LV_ASSERT_HANDLER_INCLUDE <stdint.h>
#define LV_ASSERT_HANDLER while(1); /*默认暂停*/
/*-------------
* 其他
*-----------*/
/*1: 在右下角显示CPU使用率和FPS*/
#define LV_USE_PERF_MONITOR 1
/*1: 在左下角显示内存使用和碎片(需LV_MEM_CUSTOM = 0)*/
#define LV_USE_MEM_MONITOR 1
/*1: 在重绘区域绘制随机颜色矩形*/
#define LV_USE_REFR_DEBUG 0
/*替换内置的(v)snprintf函数*/
#define LV_SPRINTF_CUSTOM 0
#if LV_SPRINTF_CUSTOM
# define LV_SPRINTF_INCLUDE <stdio.h>
# define lv_snprintf snprintf
# define lv_vsnprintf vsnprintf
#else /*LV_SPRINTF_CUSTOM*/
# define LV_SPRINTF_USE_FLOAT 0
#endif /*LV_SPRINTF_CUSTOM*/
#define LV_USE_USER_DATA 1
/*垃圾回收设置(当LVGL与高级语言绑定并由其管理内存时使用)*/
#define LV_ENABLE_GC 0
#if LV_ENABLE_GC != 0
# define LV_GC_INCLUDE "gc.h" /*垃圾回收相关头文件*/
#endif /*LV_ENABLE_GC*/
/*=====================
* 编译器设置
*=====================*/
/*大端系统设为1*/
#define LV_BIG_ENDIAN_SYSTEM 0
/*为`lv_tick_inc`函数定义自定义属性*/
#define LV_ATTRIBUTE_TICK_INC
/*为`lv_timer_handler`函数定义自定义属性*/
#define LV_ATTRIBUTE_TIMER_HANDLER
/*为`lv_disp_flush_ready`函数定义自定义属性*/
#define LV_ATTRIBUTE_FLUSH_READY
/*缓冲区所需对齐大小*/
#define LV_ATTRIBUTE_MEM_ALIGN_SIZE
/*内存对齐属性定义(例如__attribute__((aligned(4)))*/
#define LV_ATTRIBUTE_MEM_ALIGN
/*标记大型常量数组(如字体位图)的属性*/
#define LV_ATTRIBUTE_LARGE_CONST
/*RAM中大数组声明的编译器前缀*/
#define LV_ATTRIBUTE_LARGE_RAM_ARRAY
/*将性能关键函数放入更快的内存(如RAM)*/
#define LV_ATTRIBUTE_FAST_MEM
/*GPU加速操作变量的前缀(通常需要放在DMA可访问的RAM区域)*/
#define LV_ATTRIBUTE_DMA
/*将整型常量导出到绑定API(如MicroPython)*/
#define LV_EXPORT_CONST_INT(int_value) struct _silence_gcc_warning /*默认仅抑制GCC警告*/
/*将坐标范围从-32k..32k扩展到-4M..4M(使用int32_t代替int16_t)*/
#define LV_USE_LARGE_COORD 0
/*==================
* 字体设置
*===================*/
/*Montserrat字体(ASCII范围,4bpp部分符号)
*https://fonts.google.com/specimen/Montserrat*/
#define LV_FONT_MONTSERRAT_8 1
#define LV_FONT_MONTSERRAT_10 1
#define LV_FONT_MONTSERRAT_12 1
#define LV_FONT_MONTSERRAT_14 1
#define LV_FONT_MONTSERRAT_16 1
#define LV_FONT_MONTSERRAT_18 1
#define LV_FONT_MONTSERRAT_20 1
#define LV_FONT_MONTSERRAT_22 1
#define LV_FONT_MONTSERRAT_24 1
#define LV_FONT_MONTSERRAT_26 0
#define LV_FONT_MONTSERRAT_28 0
#define LV_FONT_MONTSERRAT_30 1
#define LV_FONT_MONTSERRAT_32 0
#define LV_FONT_MONTSERRAT_34 0
#define LV_FONT_MONTSERRAT_36 0
#define LV_FONT_MONTSERRAT_38 0
#define LV_FONT_MONTSERRAT_40 0
#define LV_FONT_MONTSERRAT_42 0
#define LV_FONT_MONTSERRAT_44 0
#define LV_FONT_MONTSERRAT_46 0
#define LV_FONT_MONTSERRAT_48 0
/*演示特殊功能*/
#define LV_FONT_MONTSERRAT_12_SUBPX 0
#define LV_FONT_MONTSERRAT_28_COMPRESSED 0 /*3bpp*/
#define LV_FONT_DEJAVU_16_PERSIAN_HEBREW 0 /*希伯来语、阿拉伯语、波斯语字母*/
#define LV_FONT_SIMSUN_16_CJK 0 /*1000个常用CJK部首*/
/*等宽像素完美字体*/
#define LV_FONT_UNSCII_8 0
#define LV_FONT_UNSCII_16 0
/*自定义字体声明(也可设为默认字体)*/
#define LV_FONT_CUSTOM_DECLARE
/*始终设置默认字体*/
#define LV_FONT_DEFAULT &lv_font_montserrat_14
/*启用大字体或字符数多的字体处理(取决于字体大小、面和bpp)*/
#define LV_FONT_FMT_TXT_LARGE 0
/*启用压缩字体支持*/
#define LV_USE_FONT_COMPRESSED 0
/*启用亚像素渲染*/
#define LV_USE_FONT_SUBPX 0
#if LV_USE_FONT_SUBPX
/*设置显示器的像素顺序(RGB通道的物理顺序,普通字体不影响)*/
#define LV_FONT_SUBPX_BGR 0 /*0: RGB; 1:BGR顺序*/
#endif
/*=================
* 文本设置
*=================*/
/**
* 选择字符串的字符编码
* IDE或编辑器应使用相同编码
* - LV_TXT_ENC_UTF8
* - LV_TXT_ENC_ASCII
*/
#define LV_TXT_ENC LV_TXT_ENC_UTF8
/*在这些字符处换行*/
#define LV_TXT_BREAK_CHARS " ,.;:-_"
/*长单词自动换行的最小长度(<=0时禁用)*/
#define LV_TXT_LINE_BREAK_LONG_LEN 0
/*长单词换行前的最小行首字符数*/
#define LV_TXT_LINE_BREAK_LONG_PRE_MIN_LEN 3
/*长单词换行后的最小行尾字符数*/
#define LV_TXT_LINE_BREAK_LONG_POST_MIN_LEN 3
/*文本重新着色命令的控制字符*/
#define LV_TXT_COLOR_CMD "#"
/*支持双向文本(混合左到右和右到左文本)
*根据Unicode双向算法处理方向:
*https://www.w3.org/International/articles/inline-bidi-markup/uba-basics*/
#define LV_USE_BIDI 0
#if LV_USE_BIDI
/*默认方向:
*`LV_BIDI_DIR_LTR` 左到右
*`LV_BIDI_DIR_RTL` 右到左
*`LV_BIDI_DIR_AUTO` 自动检测*/
#define LV_BIDI_BASE_DIR_DEF LV_BIDI_DIR_AUTO
#endif
/*启用阿拉伯语/波斯语字符处理(根据位置替换字符形式)*/
#define LV_USE_ARABIC_PERSIAN_CHARS 0
/*==================
* 部件使用
*================*/
/*部件文档:https://docs.lvgl.io/latest/en/html/widgets/index.html*/
#define LV_USE_ARC 1
#define LV_USE_ANIMIMG 1
#define LV_USE_BAR 1
#define LV_USE_BTN 1
#define LV_USE_BTNMATRIX 1
#define LV_USE_CANVAS 1
#define LV_USE_CHECKBOX 1
#define LV_USE_DROPDOWN 1 /*需要: lv_label*/
#define LV_USE_IMG 1 /*需要: lv_label*/
#define LV_USE_LABEL 1
#if LV_USE_LABEL
# define LV_LABEL_TEXT_SELECTION 1 /*启用文本选择*/
# define LV_LABEL_LONG_TXT_HINT 1 /*存储额外信息以加速长文本绘制*/
#endif
#define LV_USE_LINE 1
#define LV_USE_ROLLER 1 /*需要: lv_label*/
#if LV_USE_ROLLER
# define LV_ROLLER_INF_PAGES 7 /*无限滚动时的额外"页"数*/
#endif
#define LV_USE_SLIDER 1 /*需要: lv_bar*/
#define LV_USE_SWITCH 1
#define LV_USE_TEXTAREA 1 /*需要: lv_label*/
#if LV_USE_TEXTAREA != 0
# define LV_TEXTAREA_DEF_PWD_SHOW_TIME 1500 /*密码显示时间(毫秒)*/
#endif
#define LV_USE_TABLE 1
/*==================
* 额外组件
*==================*/
/*-----------
* 部件
*----------*/
#define LV_USE_CALENDAR 1
#if LV_USE_CALENDAR
# define LV_CALENDAR_WEEK_STARTS_MONDAY 0
# if LV_CALENDAR_WEEK_STARTS_MONDAY
# define LV_CALENDAR_DEFAULT_DAY_NAMES {"Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"}
# else
# define LV_CALENDAR_DEFAULT_DAY_NAMES {"Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"}
# endif
# define LV_CALENDAR_DEFAULT_MONTH_NAMES {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}
# define LV_USE_CALENDAR_HEADER_ARROW 1
# define LV_USE_CALENDAR_HEADER_DROPDOWN 1
#endif /*LV_USE_CALENDAR*/
#define LV_USE_CHART 1
#define LV_USE_COLORWHEEL 1
#define LV_USE_IMGBTN 1
#define LV_USE_KEYBOARD 1
#define LV_USE_LED 1
#define LV_USE_LIST 1
#define LV_USE_METER 1
#define LV_USE_MSGBOX 1
#define LV_USE_SPINBOX 1
#define LV_USE_SPINNER 1
#define LV_USE_TABVIEW 1
#define LV_USE_TILEVIEW 1
#define LV_USE_WIN 1
#define LV_USE_SPAN 1
#if LV_USE_SPAN
/*单行文本可包含的最大span描述符数量*/
# define LV_SPAN_SNIPPET_STACK_SIZE 64
#endif
/*-----------
* 主题
*----------*/
/*强大完整的默认主题*/
#define LV_USE_THEME_DEFAULT 1
#if LV_USE_THEME_DEFAULT
/*0: 浅色模式; 1: 深色模式*/
# define LV_THEME_DEFAULT_DARK 0
/*1: 启用按下放大效果*/
# define LV_THEME_DEFAULT_GROW 1
/*默认过渡动画时间(单位:毫秒)*/
# define LV_THEME_DEFAULT_TRANSITON_TIME 80
#endif /*LV_USE_THEME_DEFAULT*/
/*极简主题(自定义主题的良好起点)*/
#define LV_USE_THEME_BASIC 1
/*-----------
* 布局
*----------*/
/*类似CSS的Flexbox布局*/
#define LV_USE_FLEX 1
/*类似CSS的Grid布局*/
#define LV_USE_GRID 1
/*==================
* 示例
*==================*/
/*启用库内示例的编译*/
#define LV_BUILD_EXAMPLES 1
/*-- LV_CONF_H结束 --*/
#endif /*LV_CONF_H*/
#endif /*内容启用结束*/
一、lv_conf.h
文件的功能
lv_conf.h
是 LVGL(Light and Versatile Graphics Library)图形库的 核心配置文件,主要用于:
-
功能裁剪
通过宏定义开关库的各个功能模块,控制编译后库的体积。 -
硬件适配
配置颜色深度、内存管理、显示刷新率等硬件相关参数。 -
性能调优
调整缓存策略、绘图算法、日志级别等影响性能的关键参数。 -
视觉定制
设置默认主题、字体、DPI 等界面显示相关的参数。
二、宏定义分类及功能说明
1. 基础设置
宏名称 | 功能说明 | 典型值示例 |
---|---|---|
LV_COLOR_DEPTH | 颜色深度(1/8/16/32位) | 32 (ARGB8888) |
LV_DPI_DEF | 默认DPI值(影响控件默认尺寸) | 130 |
LV_TICK_CUSTOM | 使用自定义系统时间戳(代替LVGL内部计时) | 1 |
2. 内存管理
宏名称 | 功能说明 | 典型值示例 |
---|---|---|
LV_MEM_CUSTOM | 启用自定义内存管理函数 | 1 (用malloc) |
LV_MEM_SIZE | 内置内存池大小(当LV_MEM_CUSTOM=0 时) | 64*1024 |
LV_IMG_CACHE_DEF_SIZE | 图像缓存槽位数量 | 0 (禁用缓存) |
3. 硬件适配
宏名称 | 功能说明 | 典型值示例 |
---|---|---|
LV_DISP_DEF_REFR_PERIOD | 屏幕默认刷新周期(毫秒) | 30 |
LV_COLOR_16_SWAP | 交换RGB565字节序(用于SPI屏) | 0 |
LV_USE_GPU_STM32_DMA2D | 启用STM32的DMA2D硬件加速 | 0 |
4. 图形特性
宏名称 | 功能说明 | 典型值示例 |
---|---|---|
LV_DRAW_COMPLEX | 启用高级绘图(阴影/渐变/圆角等) | 1 |
LV_USE_FONT_SUBPX | 启用子像素渲染(提升字体清晰度) | 0 |
LV_SHADOW_CACHE_SIZE | 阴影效果缓存大小 | 0 |
5. 日志与调试
宏名称 | 功能说明 | 典型值示例 |
---|---|---|
LV_USE_LOG | 启用日志模块 | 1 |
LV_LOG_LEVEL | 日志输出级别(TRACE/INFO/WARN等) | LV_LOG_WARN |
LV_USE_PERF_MONITOR | 显示性能监视器(CPU/FPS) | 1 |
6. 控件开关
宏名称 | 功能说明 | 典型值示例 |
---|---|---|
LV_USE_BTN | 启用按钮控件 | 1 |
LV_USE_CHART | 启用图表控件 | 1 |
LV_USE_KEYBOARD | 启用虚拟键盘控件 | 0 |
7. 主题与国际化
宏名称 | 功能说明 | 典型值示例 |
---|---|---|
LV_USE_THEME_DEFAULT | 启用默认主题 | 1 |
LV_THEME_DEFAULT_DARK | 默认主题使用深色模式 | 0 (浅色模式) |
LV_USE_BIDI | 支持双向文本(阿拉伯语/希伯来语) | 0 |
三、配置文件的核心作用
- 资源受限设备:通过关闭非必要功能(如
LV_USE_THEME_DEFAULT=0
)可减少 20-50% 的代码体积。 - 高性能设备:启用复杂绘图(
LV_DRAW_COMPLEX=1
)和硬件加速(如DMA2D)可提升渲染速度。 - 开发阶段:打开
LV_USE_LOG
和LV_USE_PERF_MONITOR
辅助调试。
通过合理配置这些宏,开发者可在 功能丰富性 与 资源占用 之间取得最佳平衡。