ESP32-S3 开发(day5)之 GUI Guider 工具使用与代码移植实操分享
本文详细介绍了使用GUIGuider可视化工具进行ESP32-S3开发的全流程。主要内容包括:GUIGuider工具的安装配置、界面绘制、中文显示设置,以及将生成代码移植到ESP-IDF框架的关键步骤。文章重点阐述了文件拷贝、内存拓展、代码编写和编译烧录的具体操作方法,并总结了各环节的注意事项。通过该方案,成功实现了可视化设计界面在ESP32-S3板载LCD上的正常显示,显著提升了嵌入式图形界面开
本次 ESP32-S3 开发实操核心围绕GUI Guider 可视化工具展开,完成了工具的安装配置、界面绘制、中文显示设置,以及生成代码向 ESP-IDF 框架(VS Code 开发环境)的移植适配,最终实现了可视化设计界面在 ESP32-S3 板载 LCD 上的正常显示。以下为完整实操流程、关键注意事项及结合项目开发的思考与总结,为后续嵌入式图形界面可视化开发提供参考。
一、GUI Guider 工具安装与基础配置
GUI Guider 是 LVGL 官方推出的可视化界面设计工具,可通过拖拽组件快速绘制嵌入式图形界面并自动生成配套代码,大幅降低 LVGL 界面开发的难度,其安装与基础配置需完成 JDK 环境检查、软件安装及界面汉化,具体步骤如下:
- JDK 环境检查GUI Guider 运行依赖 JDK 环境,首先通过
WIN+R打开系统运行窗口,输入cmd打开控制台,执行命令java -version,若控制台显示 JDK 版本信息则说明环境已安装;若提示命令未找到,需先下载安装适配的 JDK 版本,完成环境配置后再进行后续操作。

- 软件安装双击 GUI Guider 安装包,安装过程中选择中文版本,自定义软件安装路径后点击安装,等待安装进度完成即可;安装完成后打开软件,若未注册账户需先完成注册,已有账户直接登录。
- 界面汉化配置软件登录成功后,在系统设置中将界面语言修改为中文,便于后续界面绘制与操作,完成后保存设置,重启软件即可生效。


二、GUI Guider 工程创建与界面绘制
完成工具基础配置后,通过新建工程、可视化拖拽组件实现界面设计,并完成编译预览,快速验证界面设计效果,具体操作步骤如下:

- 新建工程打开 GUI Guider 软件,点击创建新工程,根据开发需求配置工程基础信息(如适配 LVGL 版本、硬件分辨率等,需与 ESP32-S3 板载 LCD 参数匹配),配置完成后点击确认,生成空白工程。


- 可视化界面绘制GUI Guider 界面分为三大核心区域:左侧为界面与组件显示区,包含各类 LVGL 基础组件(按钮、文本、下拉列表、定时器等);中间为界面绘制区(幕布),是核心设计区域;右侧为组件属性显示区,可调整组件的位置、大小、颜色、显示内容等参数。开发时从左侧组件区拖拽所需组件至中间幕布,在右侧属性区完成组件个性化配置,按需添加多个界面与组件,实现整体界面布局设计。
- 工程编译与效果预览界面设计完成后,点击软件右上角编译运行按钮,工具会自动对设计的界面进行编译,生成预览窗口,可直观查看界面显示效果、组件交互逻辑,若需修改可直接返回绘制区调整,直至达到预期效果。

三、GUI Guider 中文显示配置
GUI Guider 默认仅支持一种字体显示中文,若需使用宋体、黑体等自定义字体,需手动导入系统字体文件,具体操作步骤如下:
- 打开电脑系统字体目录
C:\Windows\Fonts,将需要使用的字体文件(如宋体、黑体)复制到自定义文件夹(工具无法直接识别系统字体目录,需提前复制); - 回到 GUI Guider 软件,点击顶部菜单栏工具→导入字体,在文件选择窗口中定位到上述自定义文件夹,选择需要导入的字体文件完成添加;




- 字体导入成功后,在组件属性区的字体选择栏中即可找到新增字体,选中后即可实现组件的中文内容显示,按需调整中文字体大小、颜色等参数。

四、GUI Guider 生成代码向 ESP32-S3 工程(VS Code)移植
完成界面设计并预览无误后,将 GUI Guider 自动生成的代码移植到 VS Code 中的 ESP-IDF 工程,实现设计界面在 ESP32-S3 板载 LCD 上的实际显示,核心分为文件拷贝、内存拓展、代码编写、编译烧录四步,具体操作如下:
步骤 1:获取 GUI Guider 生成的核心文件
打开 GUI Guider 工程目录,找到custom和generated两个核心文件夹,这两个文件夹包含了界面设计的所有代码、配置文件及资源文件,是移植的关键。
步骤 2:将核心文件放入 ESP32-S3 工程指定目录
在 VS Code 中打开 ESP32-S3 的 ESP-IDF 工程,在工程的main文件夹下新建ui 文件夹,将上述custom和generated文件夹完整拷贝至ui文件夹中,保证文件路径无误,避免后续编译时出现文件找不到的错误。
步骤 3:拓展 ESP32-S3 内存,解决内存不足问题
GUI Guider 生成的代码包含界面资源文件,占用内存较大,ESP32-S3 默认分区表内存无法满足需求,需自定义分区表拓展内存,具体操作:
- 在 VS Code 的 ESP32-S3 工程根目录下新建文件,命名为partitions.csv;
- 向该文件中复制粘贴以下分区表配置代码,保存文件:

-
# ESP-IDF Partition Table # Name, Type, SubType, Offset, Size, Flags nvs, data, nvs, 0x9000, 0x6000, , phy_init, data, phy, 0xf000, 0x1000, , factory, app, factory, 0x10000, 0x1F0000, , vfs, data, fat, 0x200000, 0xA00000, , storage, data, spiffs, 0xc00000, 0x400000, , - 打开 ESP-IDF 的 SDK 配置界面(
idf.py menuconfig),依次找到:serial flasher config→Flash size,选择与开发板匹配的闪存大小;
Partition Table→Partition Table,选择Custom partition table CSV;- 在
Custom partition CSV file中选择上述新建的partitions.csv文件;
- 保存 SDK 配置,退出配置界面,重新编译工程即可完成内存拓展。
步骤 4:在 VS Code 中编写移植代码,实现界面调用
在 VS Code 的 ESP32-S3 工程中,打开hello_world_main.c文件,编写如下代码,实现硬件初始化、LVGL 启动及 GUI Guider 生成界面的调用,完整代码如下:
#include <stdio.h>
#include <inttypes.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_chip_info.h"
#include "esp_flash.h"
#include "esp_system.h"
#include "LCD/lcd.h"
#include "demos/lv_demos.h"
#include "timer.h"
// 引入GUI Guider核心头文件
#include "gui_guider.h"
#include "custom.h"
// 定义LVGL界面句柄
lv_ui guider_ui;
void app_main(void)
{
// 底层硬件初始化:I2C总线、IO扩展芯片
bsp_i2c_init();
pca9557_init();
// 启动LVGL移植驱动,完成与硬件的适配
bsp_lvgl_start();
// 初始化GUI Guider设计的界面
setup_ui(&guider_ui);
// 初始化自定义组件与逻辑
custom_init(&guider_ui);
// 死循环维持程序运行,保证界面持续显示
while (1) {
vTaskDelay(pdMS_TO_TICKS(10));
}
}
步骤 5:编译烧录与效果验证
代码编写完成后,在 VS Code 的终端中依次执行 ESP-IDF 编译(idf.py build)、烧录(idf.py flash)命令,烧录完成后重启 ESP32-S3 开发板,板载 LCD 屏幕将正常显示 GUI Guider 中设计的可视化界面,可进一步添加定时器等功能,实现界面动态效果(如时间实时显示)。
五、实操全程关键注意事项
本次 GUI Guider 工具使用与代码移植实操中,多个环节的细节直接影响开发结果,结合实操过程整理核心注意事项,规避同类型开发问题:
- 环境与安装环节:JDK 环境是 GUI Guider 运行的前提,需保证版本与工具适配;安装软件时务必选择中文版本,后续汉化更便捷;工具登录后需及时完成界面汉化,降低后续操作难度。
- 界面绘制环节:新建 GUI Guider 工程时,LVGL 版本、硬件分辨率需与 ESP32-S3 开发板及工程中的 LVGL 版本严格匹配,否则会出现代码移植后界面显示错乱、组件不兼容等问题。
- 中文显示环节:系统字体目录无法被工具直接识别,需提前将字体文件复制到自定义文件夹再导入;导入字体后需在组件属性区手动选择,否则仍会使用默认字体。
- 文件移植环节:
custom和generated文件夹必须完整拷贝至 ESP32-S3 工程的main/ui目录下,文件路径不可随意修改,否则编译时会出现头文件、源文件找不到的报错。 - 内存拓展环节:自定义分区表文件必须命名为
partitions.csv,配置代码不可修改格式;SDK 配置中需准确选择自定义分区表文件,且 Flash size 需与开发板实际闪存大小匹配,否则会出现烧录失败、内存不足的问题。 - 代码编写环节:必须引入
gui_guider.h和custom.h头文件,定义lv_ui guider_ui句柄;硬件初始化、LVGL 启动需在界面初始化之前执行,执行顺序不可颠倒;死循环中的延时参数建议设置为 10ms,保证界面动态效果的流畅性。 - 编译烧录环节:修改分区表后必须重新保存 SDK 配置并重新编译工程,否则分区表配置不生效;烧录时需保证 ESP32-S3 开发板与电脑连接正常,选择 UART 烧录方式。
六、项目开发思考与总结
本次实操实现了 GUI Guider 从安装配置、界面设计到代码移植的全流程操作,将可视化设计的界面成功移植到 ESP32-S3 开发板,相较于纯手写 LVGL 代码,可视化工具大幅提升了开发效率,结合实操过程与嵌入式图形界面项目开发需求,形成以下思考与总结:
1. 本次实操核心技术收获
- 掌握了 GUI Guider 可视化工具的完整使用流程,包括环境检查、软件安装、工程创建、界面绘制、中文显示配置及编译预览,理解了可视化工具 “所见即所得” 的开发优势。
- 学会了 GUI Guider 生成代码向 ESP-IDF 框架的移植方法,掌握了核心文件拷贝、自定义分区表拓展内存、移植代码编写的关键步骤,积累了第三方工具代码与 ESP32-S3 工程适配的经验。
- 进一步深化了 LVGL 图形库与 ESP32-S3 硬件的适配逻辑,理解了
bsp_lvgl_start()的底层作用,以及硬件初始化、LVGL 启动、界面初始化的执行顺序,规避了硬件与软件配置的冲突问题。 - 掌握了 ESP32-S3 自定义分区表的配置方法,学会了通过
partitions.csv文件拓展内存,解决了嵌入式开发中资源文件占用内存过大的常见问题,该方法也适用于其他需要大内存的 ESP32-S3 开发场景。
2. 可视化工具开发的项目优势与思考
- 开发效率大幅提升:GUI Guider 通过拖拽组件即可完成界面设计,无需手动编写 LVGL 组件的创建、配置代码,自动生成的代码规范、无冗余,相较于纯手写代码,节省了 80% 以上的界面开发时间,尤其适合复杂界面的快速设计,非常适合嵌入式项目的快速原型开发。
- 降低开发门槛:对于 LVGL 基础薄弱的开发者,可视化工具无需深入掌握 LVGL 底层 API,只需通过图形化操作即可实现界面设计,降低了嵌入式图形界面的开发门槛,便于团队中硬件开发、软件开发人员的协作。
- 界面设计与硬件开发解耦:在实际项目开发中,可由 UI 设计人员通过 GUI Guider 完成界面可视化设计,生成代码后由嵌入式开发人员完成向 ESP32-S3 等硬件的移植适配,实现界面设计与硬件开发的解耦,提升团队整体开发效率。
- 灵活性与可定制性兼备:GUI Guider 不仅支持基础组件的拖拽设计,还支持自定义组件、事件逻辑、动态效果,生成的
custom文件夹可手动修改代码,实现个性化功能开发,兼顾了开发效率与项目的个性化需求。
3. 实际项目开发中的优化方向
- 字体与资源优化:导入中文字体时,可对字体文件进行裁剪(仅保留项目所需的汉字),减小字体文件占用的内存;对于界面中的图片、图标等资源,可进行压缩处理,降低资源文件对 ESP32-S3 内存的占用。
- 代码分层与封装:将 GUI Guider 移植代码与硬件初始化、外设驱动代码进行分层封装,在
app_main中仅保留核心调用逻辑,便于后续界面修改、功能拓展时的代码维护,提升项目的可扩展性。 - 交互逻辑的完善:GUI Guider 生成的代码仅包含基础界面显示逻辑,实际项目中需在
custom文件夹中添加组件的交互逻辑(如按钮点击控制外设、下拉列表选择修改界面参数等),实现图形界面与硬件外设的联动,让界面具备实际的业务功能。 - 界面性能优化:对于复杂的多界面项目,需实现界面的懒加载与资源释放,避免同时加载所有界面导致的内存占用过高、界面卡顿;合理设置 LVGL 的刷新频率,兼顾界面流畅性与 ESP32-S3 的系统资源占用。
4. 后续开发规划
- 深入学习 GUI Guider 的高级功能,包括自定义组件制作、界面动画设计、多语言切换等,实现更复杂、更美观的嵌入式图形界面设计,满足实际项目的界面需求。
- 结合 ESP32-S3 的板载外设(如姿态传感器、触摸屏、摄像头),在 GUI Guider 设计的界面中添加外设交互逻辑,实现 “界面操作 - 硬件响应 - 数据反馈” 的全流程功能,开发具备实际应用价值的嵌入式项目。
- 总结 GUI Guider 代码移植的通用模板,包括分区表配置、移植代码编写、资源优化等,形成标准化的移植流程,为后续不同 ESP32 系列硬件(如 ESP32、ESP32-C3)的 GUI Guider 代码移植提供参考。
- 对比 GUI Guider 与其他嵌入式可视化界面工具的优劣,结合项目需求选择合适的开发工具,同时深入学习 LVGL 底层源码,理解可视化工具生成代码的实现逻辑,能够自主解决工具开发与代码移植中的各类问题。
七、实操最终效果
本次实操通过 GUI Guider 完成了基础可视化界面的设计,成功移植到 ESP32-S3 开发板后,板载 LCD 屏幕可清晰显示设计的界面布局与中文内容;在此基础上添加定时器功能后,实现了时间实时显示等动态效果,界面显示流畅、无卡顿,组件交互正常,达到了预期的开发目标。

更多推荐



所有评论(0)