Files
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

115 lines
2.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
---
## 在主程序中调用
```c
#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`