特性 (UI):实现包含屏幕、图像和字体的 UI 组件

新增资源文件:添加了字体、图像和屏幕相关的头文件与源文件。
定义数据结构:创建了用于描述字体和图像的数据结构。
实现主屏逻辑:实现了主屏幕的创建函数以及周期性刷新(tick)函数。
集成 LVGL 管理:集成了 LVGL 主题初始化及屏幕管理功能。
添加 UI 初始化:新增 UI 初始化及刷新函数,用于管理界面更新。
重构主入口:重构主应用程序入口,以支持 UI 任务及 FreeRTOS 多任务调度。
更新构建配置:更新了 CMakeLists 及组件配置,以包含新的依赖项。
This commit is contained in:
Wang Beihong
2026-04-05 21:50:06 +08:00
parent e72ad9fcf0
commit 990abc210c
29 changed files with 15373 additions and 18 deletions

View File

@@ -0,0 +1,80 @@
// SPDX-License-Identifier: MIT
#pragma once
#include "esp_err.h"
#ifdef __cplusplus
extern "C" {
#endif
/* LCD pins */
#ifndef EXAMPLE_LCD_GPIO_SCLK
#define EXAMPLE_LCD_GPIO_SCLK CONFIG_LVGL_ST7789_GPIO_SCLK
#endif
#ifndef EXAMPLE_LCD_GPIO_MOSI
#define EXAMPLE_LCD_GPIO_MOSI CONFIG_LVGL_ST7789_GPIO_MOSI
#endif
#ifndef EXAMPLE_LCD_GPIO_RST
#define EXAMPLE_LCD_GPIO_RST CONFIG_LVGL_ST7789_GPIO_RST
#endif
#ifndef EXAMPLE_LCD_GPIO_DC
#define EXAMPLE_LCD_GPIO_DC CONFIG_LVGL_ST7789_GPIO_DC
#endif
#ifndef EXAMPLE_LCD_GPIO_CS
#define EXAMPLE_LCD_GPIO_CS CONFIG_LVGL_ST7789_GPIO_CS
#endif
#ifndef EXAMPLE_LCD_GPIO_BL
#define EXAMPLE_LCD_GPIO_BL CONFIG_LVGL_ST7789_GPIO_BL
#endif
/* LCD size (ST7789 240x240) */
// 可通过 menuconfig 配置
#ifndef EXAMPLE_LCD_H_RES
#define EXAMPLE_LCD_H_RES CONFIG_LVGL_ST7789_LCD_H_RES
#endif
#ifndef EXAMPLE_LCD_V_RES
#define EXAMPLE_LCD_V_RES CONFIG_LVGL_ST7789_LCD_V_RES
#endif
/* LCD SPI总线配置 */
#define EXAMPLE_LCD_SPI_NUM (SPI2_HOST) // 使用SPI2主机接口进行通信
/* LCD显示参数配置 */
#define EXAMPLE_LCD_PIXEL_CLK_HZ (20 * 1000 * 1000) // ST7789常用20MHz兼顾稳定性与刷新速度
/* LCD命令和参数配置 */
#define EXAMPLE_LCD_CMD_BITS (8) // 命令位数为8位用于发送LCD控制命令
#define EXAMPLE_LCD_PARAM_BITS (8) // 参数位数为8位用于发送命令参数
/* LCD颜色和缓冲区配置 */
#define EXAMPLE_LCD_BITS_PER_PIXEL (16) // 每个像素使用16位颜色(RGB565格式)
#define EXAMPLE_LCD_DRAW_BUFF_DOUBLE (1) // 启用双缓冲模式,提高显示流畅度
#define EXAMPLE_LCD_DRAW_BUFF_HEIGHT (50) // 绘图缓冲区高度为50行影响刷新性能
/* ST7789颜色配置出现偏色时优先调整这三项 */
#define EXAMPLE_LCD_COLOR_ORDER_BGR (0) // 0: RGB, 1: BGR
#define EXAMPLE_LCD_INVERT_COLOR (1) // 0: 正常色, 1: 反色
#define EXAMPLE_LCD_SWAP_BYTES (1) // 0: 不交换RGB565高低字节, 1: 交换
/* LCD背光配置 */
#define EXAMPLE_LCD_BL_ON_LEVEL (1) // 背光开启电平为高电平(1)
/* LCD方向/偏移配置 */
#define EXAMPLE_LCD_GAP_X (0)
#define EXAMPLE_LCD_GAP_Y (0)
#define EXAMPLE_LCD_ROT_SWAP_XY (1)
#define EXAMPLE_LCD_ROT_MIRROR_X (1)
#define EXAMPLE_LCD_ROT_MIRROR_Y (0)
/* 调试项:上电后是否先显示三色测试图 */
#define EXAMPLE_LCD_ENABLE_COLOR_TEST (0)
esp_err_t start_lvgl_demo(void);
esp_err_t lvgl_st7789_set_center_text(const char *text);
#ifdef __cplusplus
}
#endif