【LVGL】打造属于自己的工控界面-1
·
1、设置芯片型号
开发视频: 请点击观看!
1、设置芯片型号

2、设置配置参数
1、设置内存等参数


3、编译报错及处理

分析原因
你的 main.c 是按 旧版 BSP API(基于 esp_lvgl_port) 写的,但工程里实际安装的是 Waveshare BSP v3.0.0,它已迁移到全新的 espressif/esp_lvgl_adapter,两套 API 不兼容。
具体证据:
- 新 bsp_display_cfg_t 的成员完全不同(managed_components/waveshare__esp32_p4_wifi6_touch_lcd_7b/include/bsp/esp32_p4_wifi6_touch_lcd_7b.h:262):
• lv_adapter_cfg — LVGL 任务/栈配置
• rotation — 旋转角度(注册时就确定)
• tear_avoid_mode— 防撕裂模式(决定缓冲策略)
• touch_flags — 触摸坐标变换
旧的 lvgl_port_cfg / buffer_size / double_buffer / flags 都不存在。 - 旧宏已被删除:ESP_LVGL_PORT_INIT_CONFIG()、BSP_LCD_DRAW_BUFF_SIZE、BSP_LCD_DRAW_BUFF_DOUBLE属于 esp_lvgl_port 体系,BSP 3.0.0 依赖的是 esp_lvgl_adapter ~0.6(见 managed_components/waveshare__esp32_p4_wifi6_touch_lcd_7b/idf_component.yml),这些宏随组件一起移除了。esp_lvgl_adapter 里的 MIGRATION_GUIDE.md 明确列出了这些被删字段。
- #include “bsp/esp-bsp.h” 能通过是因为 Waveshare 自带了一个同名转发头(内容就一行,转发到自己的 BSP 头),所以编译器看到的是新结构体。
- 修复
已按新 API 重写 main/main.c:22 的初始化:
• 缓冲区大小/双缓冲不再由用户指定,由 tear_avoid_mode 决定 —— TRIPLE_PARTIAL 即 3 个 frame buffer,由 adapter 自动分配(180° 旋转正好要求 3 个);
• 旋转改到 cfg.rotation = ESP_LV_ADAPTER_ROTATE_180,去掉了启动后的 bsp_display_rotate() —— 旋转必须在注册 display 时告知 adapter,否则帧缓冲数量分配不对;adapter 用 PPA 硬件加速旋转,sw_rotate/buff_dma 标志也不需要了;
• touch_flags 采用 BSP 默认值(mirror_x=1, mirror_y=1),与官方 demo 一致;
• 加了 disp == NULL 的失败检查。
补充一句:BSP 自带的 bsp_display_start() 默认配置就是 ROTATE_180 + TRIPLE_PARTIAL + mirror_x/mirror_y=1,如果你不打算自定义 LVGL 任务参数,直接调它也可以。
4、编译完成

注释:本文仅供参考学习!
更多推荐

所有评论(0)