Files
Smart-granary-code/components/lvgl_st7789_use
Wang Beihong 30e95387e5 添加 UI 变量管理并重构主应用程序结构
引入 vars.c 和 vars.h 用于管理与 UI 相关的全局变量。

新增 get_var_weigt_ui 和 set_var_weigt_ui 函数,用于访问和修改 UI 重量变量。

更新 CMakeLists.txt 以包含新的 UI 和 LVGL 依赖项。

将 main.c 转换为 main.cpp 以支持 C++ 特性,并重构了应用程序入口点。

实现了使用 FreeRTOS 定期更新 UI 的 UI 任务。

在 partitions.csv 中创建自定义分区表,用于管理闪存空间。

添加 update_sdkconfig.sh 脚本,自动更新 SDK 配置中的闪存大小和 SPIRAM 设置。

移除旧的 main.c 文件以精简项目结构。
2026-04-20 21:13:00 +08:00
..

lvgl_st7789_use 组件说明

lvgl_st7789_use 是项目中的 LCD 显示组件,基于 esp_lcd + esp_lvgl_port,用于快速驱动 ST7789 SPI 屏并显示 LVGL 界面。


功能概览

  • 初始化 SPI LCD含背光、面板、显示偏移
  • 初始化 LVGL 端口并注册显示设备
  • 默认创建一个居中标签用于快速验证显示链路
  • 提供运行时更新中心文本接口
  • 支持可配置方向、镜像与偏移
  • 支持可选三色测试图(调试用)

对外 API

头文件:include/lvgl_st7789_use.h

  • esp_err_t start_lvgl_demo(void);

    • 完成 LCD + LVGL 初始化并创建默认界面
  • esp_err_t lvgl_st7789_set_center_text(const char *text);

    • 运行时更新中心标签文字(线程安全,内部已加锁)

关键配置项(可直接改宏)

include/lvgl_st7789_use.h 中:

1) 屏幕与 SPI

  • EXAMPLE_LCD_H_RES / EXAMPLE_LCD_V_RES
  • EXAMPLE_LCD_PIXEL_CLK_HZ
  • EXAMPLE_LCD_SPI_NUM
  • EXAMPLE_LCD_CMD_BITS / EXAMPLE_LCD_PARAM_BITS

建议ST7789 默认可先用 20MHz,如出现花屏或不稳定再降到 10MHz 复测。

2) 颜色校准(重点)

  • EXAMPLE_LCD_COLOR_ORDER_BGR
  • EXAMPLE_LCD_INVERT_COLOR
  • EXAMPLE_LCD_SWAP_BYTES

说明:

  • 出现“黑色发灰、红绿蓝偏紫/互串”时,优先调整这三项。
  • 建议从 RGB + 不反色 + 不交换字节 起步,再逐项切换。

3) 方向与偏移(重点)

  • EXAMPLE_LCD_GAP_X
  • EXAMPLE_LCD_GAP_Y
  • EXAMPLE_LCD_ROT_SWAP_XY
  • EXAMPLE_LCD_ROT_MIRROR_X
  • EXAMPLE_LCD_ROT_MIRROR_Y

说明:

  • 若出现“文字偏移/边缘花屏/方向反了”,优先微调上述宏,不要同时在多层重复旋转。

4) 调试项

  • EXAMPLE_LCD_ENABLE_COLOR_TEST
    • 1:上电先画 RGB 三色测试图(便于确认硬件链路)
    • 0:跳过测试,直接进入 LVGL

在主程序中调用

#include "esp_check.h"
#include "lvgl_st7789_use.h"

void app_main(void)
{
    ESP_ERROR_CHECK(start_lvgl_demo());
  ESP_ERROR_CHECK(lvgl_st7789_set_center_text("BotanicalBuddy"));
}

常见问题

1) 背光亮但没有内容

优先排查:

  • 面板型号与驱动是否匹配(当前应为 ST7789
  • SPI 模式、时钟是否过高
  • 方向/偏移参数是否正确

2) 文字方向反了或显示偏移

优先调整:

  • EXAMPLE_LCD_ROT_*
  • EXAMPLE_LCD_GAP_X / EXAMPLE_LCD_GAP_Y

3) 想快速确认硬件链路是否通

EXAMPLE_LCD_ENABLE_COLOR_TEST 设为 1,观察是否能显示三色图。


依赖

由组件 CMakeLists.txt 声明:

  • driver
  • esp_lcd
  • esp_lvgl_port