2401_84393694 2025-08-19 21:22 采纳率: 0%
浏览 55

9.2版本的lvgl没有了lv_drv_conf.h文件

我想在开发板上运行9.2版本的lvgl官方已经写好的实例项目,但是新版本已经没有了lv_drv_conf.h文件,这个时候我应该如何修改代码,如何设置包括触摸屏大小,显示屏大小等等

  • 写回答

5条回答 默认 最新

  • 檀越@新空间 2025-08-19 21:23
    关注

    晚上好🌙🌙🌙
    本答案参考通义千问

    LVGL 9.2 版本中,确实已经移除了 lv_drv_conf.h 文件,这是 LVGL 对配置方式的一种重构和优化。新的配置方式是通过 lv_conf.h 文件进行配置,并且使用了更灵活的宏定义来管理驱动和系统设置。


    📌 问题分析

    你提到的问题包括:

    • 没有 lv_drv_conf.h
    • 如何设置触摸屏大小、显示屏大小等
    • 如何修改代码以适应新版本

    ✅ 解决方案

    1. 创建或更新 lv_conf.h 文件

    在 LVGL 9.2 中,所有配置都集中在一个文件中:lv_conf.h。你需要在项目中创建或更新这个文件。

    示例 lv_conf.h 内容(根据你的硬件配置):

    #ifndef LV_CONF_H
    #define LV_CONF_H
    
    #include <stdbool.h>
    #include <stdint.h>
    
    // 基础配置
    #define LV_USE_ASSERT_NULL       0
    #define LV_USE_ASSERT_MEM        0
    #define LV_USE_ASSERT_STR        0
    #define LV_USE_ASSERT_STACK      0
    #define LV_USE_ASSERT_REC        0
    #define LV_USE_LOG               0
    #define LV_USE_PERF_MONITOR      0
    #define LV_USE_FILESYSTEM        0
    #define LV_USE_GIF               0
    #define LV_USE_BMP               0
    #define LV_USE_JPG               0
    #define LV_USE_PNG               0
    #define LV_USE_FONT_SDF          0
    #define LV_USE_WIDGETS           1
    #define LV_USE_THEME_DEFAULT     1
    #define LV_USE_ANIMATION         1
    #define LV_USE_GROUP             1
    #define LV_USE_KEYBOARD          0
    #define LV_USE_MOUSEWHEEL        0
    #define LV_USE_MSGBOX            0
    #define LV_USE_SPINNER           0
    #define LV_USE_SLIDER            1
    #define LV_USE_BUTTON            1
    #define LV_USE_LABEL             1
    #define LV_USE_IMAGE             1
    #define LV_USE_LED               0
    #define LV_USE_LIST              1
    #define LV_USE_TABLE             0
    #define LV_USE_TABVIEW           1
    #define LV_USE_SWITCH            1
    #define LV_USE_TEXTAREA          0
    #define LV_USE_CALENDAR          0
    #define LV_USE_PROGRESSBAR       1
    #define LV_USE_RATING            0
    #define LV_USE_CHART             0
    #define LV_USE_KEYBOARD          0
    #define LV_USE_METER             0
    #define LV_USE_TOGGLE            0
    #define LV_USE_DROPDOWN          0
    #define LV_USE_BAR               1
    #define LV_USE_IMG_BTN           0
    #define LV_USE_SPINBOX           0
    #define LV_USE_MENU              0
    #define LV_USE_MSGBOX            0
    #define LV_USE_TILEVIEW          0
    #define LV_USE_TABSTRIP          0
    #define LV_USE_FLEX              0
    #define LV_USE_GRID              0
    #define LV_USE_LAYOUT            0
    #define LV_USE_EVENT_MANAGER     0
    #define LV_USE_SYSMON            0
    #define LV_USE_TINYFS            0
    #define LV_USE_VG_RENDERER       0
    #define LV_USE_RENDERING         1
    
    // 显示器配置
    #define LV_HOR_RES_MAX           480
    #define LV_VER_RES_MAX           320
    #define LV_COLOR_DEPTH           16
    #define LV_TICK_PERIOD_MS        10
    
    // 驱动配置(如SPI/RGB接口)
    #define LV_USE_DISPLAY           1
    #define LV_DISPLAY_1             1
    #define LV_DISPLAY_1_NAME        "disp"
    #define LV_DISPLAY_1_DRIVER      "esp32"
    #define LV_DISPLAY_1_WIDTH       480
    #define LV_DISPLAY_1_HEIGHT      320
    #define LV_DISPLAY_1_ROTATION    LV_DISPLAY_ROT_0
    
    // 触摸屏配置
    #define LV_USE_TOUCHPAD          1
    #define LV_TOUCHPAD_1            1
    #define LV_TOUCHPAD_1_NAME       "touch"
    #define LV_TOUCHPAD_1_DRIVER     "esp32"
    #define LV_TOUCHPAD_1_WIDTH      480
    #define LV_TOUCHPAD_1_HEIGHT     320
    #define LV_TOUCHPAD_1_INVERT_X   false
    #define LV_TOUCHPAD_1_INVERT_Y   false
    #define LV_TOUCHPAD_1_SWAP_XY    false
    
    // 其他可选配置
    #define LV_USE_INPUT_DEVICES     1
    #define LV_USE_KEYBOARD          0
    #define LV_USE_MOUSE             0
    #define LV_USE_TOUCH             1
    
    #endif // LV_CONF_H
    

    注意: 上述配置中的 LV_DISPLAY_1_DRIVERLV_TOUCHPAD_1_DRIVER 需要根据你使用的开发板(如 ESP32、STM32 等)进行调整。


    2. 替换旧版驱动代码

    在旧版中,你可能会在 lv_drv_conf.h 中设置如下内容:

    #define LV_DRV_TOUCH_SIZE_X 480
    #define LV_DRV_TOUCH_SIZE_Y 320
    

    在新版中,这些配置应该放在 lv_conf.h 的触摸屏部分,例如:

    #define LV_TOUCHPAD_1_WIDTH      480
    #define LV_TOUCHPAD_1_HEIGHT     320
    

    3. 确保包含 lv_conf.h

    在你的主程序文件(如 main.clvgl_main.c)中,添加以下代码:

    #include "lv_conf.h"
    

    这将确保所有配置生效。


    4. 初始化 LVGL

    在初始化时,确保调用正确的函数:

    lv_init();
    lv_disp_t * disp = lv_disp_create(LV_DISP_1_WIDTH, LV_DISP_1_HEIGHT);
    lv_theme_t * th = lv_theme_default_init(disp, LV_PALETTE_BLUE, LV_COLOR_WHITE, true, LV_FONT_DEFAULT);
    lv_disp_set_theme(disp, th);
    

    5. **示例代码(基于 ESP32 + ILI9341)

    如果你使用的是 ESP32 + ILI9341 屏幕,可以参考以下配置:

    #define LV_DISPLAY_1_DRIVER      "ili9341"
    #define LV_DISPLAY_1_WIDTH       240
    #define LV_DISPLAY_1_HEIGHT      320
    #define LV_DISPLAY_1_ROTATION    LV_DISPLAY_ROT_90
    

    🔧 可能需要的额外操作

    | 项目 | 说明 | |------|------| | 驱动适配 | 如果你使用的是自定义驱动,需确保 lv_port_drivers 已正确集成 | | 编译选项 | 确保你的编译器支持 C99 或更高标准 | | 依赖库 | 确保 lvgllv_drivers 库已正确链接 |


    ✅ 总结

    | 步骤 | 内容 | |------|------| | 1 | 创建或更新 lv_conf.h 文件 | | 2 | 在 lv_conf.h 中设置屏幕尺寸、颜色深度、驱动类型等 | | 3 | 在主程序中包含 #include "lv_conf.h" | | 4 | 初始化 LVGL 并加载主题 | | 5 | 根据实际硬件调整驱动配置 |


    💡 小贴士


    如有特定开发板(如 STM32、ESP32、Linux 等),我可以提供更具体的配置示例。欢迎继续提问!

    评论

报告相同问题?

问题事件

  • 创建了问题 8月19日