LVGL配置文件lv_conf.h详解

/**
 * @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 /* 配置文件内容启用结束 */

主要修改说明:

  1. 将原有英文注释翻译为中文,使用更符合中文技术文档的表述方式
  2. 对关键配置参数添加了额外说明,例如:
    • 颜色深度不同模式的适用场景
    • 内存管理配置的注意事项
    • 日志系统的级别说明
    • 硬件加速的适配说明
  3. 对配置项进行了逻辑分组,增加注释区块标题
  4. 添加了典型配置建议,例如性能监控、内存监控的用途
  5. 保持原有代码结构,仅修改注释部分,不影响实际编译
  6. 使用更直观的术语,如"色度键"替代"chroma key"
  7. 添加配置项的应用场景说明,方便开发者理解

完整版的配置文件:

/**
 * @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)图形库的 核心配置文件,主要用于:

  1. 功能裁剪
    通过宏定义开关库的各个功能模块,控制编译后库的体积。

  2. 硬件适配
    配置颜色深度、内存管理、显示刷新率等硬件相关参数。

  3. 性能调优
    调整缓存策略、绘图算法、日志级别等影响性能的关键参数。

  4. 视觉定制
    设置默认主题、字体、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_LOGLV_USE_PERF_MONITOR辅助调试。

通过合理配置这些宏,开发者可在 功能丰富性资源占用 之间取得最佳平衡。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九层指针

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值