2026.03 GuideGUI+ESP-IDF一些提升体验的技巧
2026.03 GuideGUI+ESP-IDF一些提升体验的技巧
GUI-Guider项目结构大揭秘
好的,让我们来看看这个GUI-Guider生成的项目到底长啥样!
项目目录结构树
TTT2/
├── custom/ # 自定义代码目录
├── generated/ # 自动生成的代码目录
│ ├── guider_customer_fonts/ # 自定义字体
│ ├── guider_fonts/ # GUI-Guider生成的字体
│ ├── images/ # 图片资源
│ ├── events_init.c/h # 事件初始化代码
│ ├── generated.mk # 编译脚本
│ ├── gui_guider.c/h # GUI-Guider核心代码
│ ├── setup_scr_screen.c # 屏幕设置代码
│ └── widgets_init.c/h # 控件初始化代码
├── import/ # 导入资源目录
├── lib/ # 库文件目录
├── lvgl/ # LVGL图形库源码
├── lvgl-simulator/ # LVGL模拟器
├── ports/ # 平台移植层
├── temp/ # 临时文件目录
├── CMakeLists.txt # CMake构建文件
├── LICENSE.txt # 许可证文件
├── SCR.txt # 屏幕配置文件
└── TTT2.guiguider # GUI-Guider项目配置文件
眼花缭乱是吧,但是其实平常只用得到两个文件夹,也就是
custom/ - 自定义代码目录
generated/ - 自动生成的代码目录

generated这个文件夹里的代码都是GUI-Guider自动生成的,请勿手动修改! 每次在GUI界面上操作,生成的代码就会自动更新到这里。挑三个最重要的说:
images/ - 导入的图片资源都在这
guider_fonts/ - GUI-Guider生成的字体文件
guider_customer_fonts/ - 自定义导入的字体文件

可以看到,每用一个字号,都会单独的被自动的取模,所以做项目的时候,尽量不要用太多的不同字号的字体,因为每个字体都会把ASCII码全部都取模一遍,很占空间,当然,汉字是单独储存的,用到的才会取模。
GUI-Guider粘贴文件到VSCODE上,编译老是报错
好啦,这个其实也是老问题了,原因是,当文件目录出现变动或者文件内容出现大幅度修改的时候,vscode先前构建好的目录或者链接的数据就检测不到了,所以就会报错,当然,你可以点垃圾桶重新构建整一个文件,但是那样真的太浪费时间了,而且也没有必要,所以给出一个神奇小代码。
idf.py reconfigure
使用方法如下图

等待完成后再进行编译,就可以看到原来报错的内容或者各种奇怪的编译报错问题就解决啦!
GUI-Guider削减体积小技巧

这两个按钮强烈建议都多嗯嗯,因为有的图片用不到或者改了大小之后,并不会自动的删除旧的文件,所以,多点点,没坏处。

另外,这两个文件夹只要改动过,都十分的建议把整个项目都链接一下,用上面提过的代码。
记得给LVGL上锁
今天烧录下来几乎是最大的坑,估计用freertos任务调度之后会好一些,但是如果没用的话,直接调用lvgl函数来修改一些参数的时候,lvgl会变得非常的不稳定,经常报错,解决办法就是在修改文字信息的时候,给端口加上锁。
主要是因为LVGL 图形库本身不是线程安全的。在 ESP32 的双核处理器上,当以下情况发生时会引发冲突:
- LVGL 刷新任务在 Core 1 上运行,正在绘制界面
- 你的业务逻辑在 Core 0 或其他任务中修改 LVGL 对象(如更新文本、修改进度条等)
- 两者同时访问 LVGL 的内部数据结构,导致竞态条件和内存访问冲突
总结
在使用 LVGL + ESP32 + FreeRTOS 时,必须遵守以下规则:
任何 LVGL API 调用都要用 lvgl_port_lock() 保护
锁内只执行快速的 LVGL 操作
及时调用 lvgl_port_unlock() 释放锁
玩几天LVGL,发现这确实是很方便的工具,记录和总结了一些小技巧,希望读到这里的人,能够有所收获。
更多推荐



所有评论(0)