2. 开发环境搭建对比:LVGL的PC模拟器(VS Code + SDL)搭建 vs TouchGFX的PC模拟器(STM32CubeIDE + TouchGFX Designer)搭建
说实话,很多初学者卡在第一步——环境搭不起来。我见过太多人,代码写得挺好,结果因为工具链没配好,折腾了两三天还没看到第一个Demo跑起来。这一章,咱们就把两套环境从头到尾捋一遍。
LVGL和TouchGFX的PC模拟器,说白了就是让你在电脑上直接跑GUI,不用烧到板子上。调试效率能提升好几倍。我个人习惯是先在模拟器上把界面逻辑调通,再移植到硬件上。嗯,这样踩坑成本低很多。
核心差异一句话总结:LVGL走的是「编辑器自由 + CMake + SDL」的轻量路线;TouchGFX走的是「STM32CubeIDE全家桶 + 可视化拖拽」的集成路线。一个像搭积木自己选零件,一个像买乐高套装开箱即用。
2.1 LVGL PC模拟器搭建(VS Code + SDL)
LVGL的模拟器,我推荐用VS Code搭配SDL2。为什么?因为VS Code轻量、插件生态好,SDL2跨平台,Windows/macOS/Linux都能跑。你想想看,一套环境三平台通用,多省事。
2.1.1 准备工作
- VS Code:去官网下载安装,记得勾选「添加到PATH」。
- CMake:LVGL用CMake构建,版本建议3.16以上。
- MinGW(Windows)或gcc(Linux/macOS):C编译器,Windows推荐MinGW-w64。
- SDL2开发库:LVGL的显示和输入依赖SDL2。
我的小技巧:Windows下SDL2别自己编译,直接下载预编译的Development Libraries,解压到固定路径就行。我曾经自己编译SDL2,折腾了一下午,最后发现预编译版直接能用……
2.1.2 搭建步骤
- 克隆LVGL模拟器仓库:
git clone https://github.com/lvgl/lv_port_pc_vscode.git - 配置SDL2路径:打开项目根目录的
CMakeLists.txt,找到SDL2相关设置,把路径改成你的SDL2安装位置。 - 安装VS Code插件:C/C++扩展、CMake Tools扩展、CMake扩展。
- 编译运行:按
Ctrl+Shift+P,选择「CMake: Build」,然后按F5启动调试。
// CMakeLists.txt 中SDL2路径配置示例(Windows)
set(SDL2_DIR "C:/SDL2-2.26.5/cmake")
find_package(SDL2 REQUIRED)
target_link_libraries(lvgl_sim PRIVATE SDL2::SDL2)
避坑指南:我曾经在Windows上遇到SDL2找不到的问题,原因是MinGW的位数和SDL2库不匹配。64位MinGW必须配64位SDL2库,32位配32位。检查方法:在终端输入 gcc -dumpmachine 看目标架构。
2.1.3 验证环境
编译成功后,你会看到一个窗口,里面跑着LVGL的官方Demo——一个带按钮和滑条的仪表盘界面。能正常点击、滑动,说明环境搭好了。
LVGL模拟器优势:完全脱离硬件,代码改完立刻看到效果。调试时我经常在模拟器里加 printf 打日志,比用硬件JTAG快多了。
2.2 TouchGFX PC模拟器搭建(STM32CubeIDE + TouchGFX Designer)
TouchGFX的环境搭建,说白了就是装两个软件:STM32CubeIDE(IDE)和TouchGFX Designer(可视化设计工具)。这两个东西都是ST官方出品,集成度很高,但体积也大。
2.2.1 准备工作
- STM32CubeIDE:去ST官网下载,安装包约1.5GB。安装时记得勾选「TouchGFX插件」。
- TouchGFX Designer:独立安装包,约800MB。也可以从STM32CubeIDE内部下载。
- Java Runtime:TouchGFX Designer依赖Java,如果电脑没有,安装程序会自动提示。
我建议:先装STM32CubeIDE,再装TouchGFX Designer。顺序反了可能会遇到插件识别不到的问题。我踩过这个坑,后来重装了一遍才解决。
2.2.2 搭建步骤
- 安装STM32CubeIDE:一路默认安装,安装路径不要有中文和空格。
- 安装TouchGFX Designer:同样默认安装,安装完成后启动一次,确认能正常打开。
- 创建TouchGFX项目:打开TouchGFX Designer,选择「New Project」→「Empty Application」→ 选择目标平台为「Simulator」。
- 生成代码:在Designer里拖几个控件,点击右上角的「Generate Code」按钮。
- 导入到STM32CubeIDE:打开STM32CubeIDE,选择「File」→「Import」→「Existing Projects into Workspace」,选中刚才生成的工程目录。
- 编译运行:在STM32CubeIDE里点击「Build All」,然后点击「Run」→「Run As」→「C/C++ Application」。
// TouchGFX模拟器入口代码(自动生成,无需手动修改)
int main() {
touchgfx::HAL::getInstance()->taskEntry(); // 启动GUI主循环
return 0;
}
避坑指南:TouchGFX Designer生成的代码,默认编译目标可能是「Release」模式。如果你在模拟器里点了按钮没反应,检查一下是不是编译成了「Debug」模式。Debug模式下模拟器性能会下降,触摸响应变慢。我曾经因为这个排查了半天……
2.2.3 验证环境
编译成功后,会弹出一个模拟器窗口,显示你刚才在Designer里拖拽的界面。点击按钮、滑动屏幕,都能实时响应。
TouchGFX模拟器优势:所见即所得。你在Designer里拖一个按钮,模拟器里立刻就能看到效果。对于UI设计师来说,这个工作流非常友好。
2.3 两套环境对比总结
我把两套环境的搭建要点整理成了表格,方便你对照参考。
| 对比维度 | LVGL (VS Code + SDL) | TouchGFX (STM32CubeIDE + Designer) |
|---|---|---|
| 安装包大小 | VS Code ~200MB + SDL2 ~10MB | STM32CubeIDE ~1.5GB + Designer ~800MB |
| 搭建耗时 | 约30分钟(熟练后10分钟) | 约1小时(含下载安装) |
| 跨平台支持 | Windows/macOS/Linux | 仅Windows(官方推荐) |
| 可视化设计 | 无(需手写代码或第三方工具) | 内置TouchGFX Designer拖拽设计 |
| 调试体验 | VS Code断点调试 + printf日志 | STM32CubeIDE断点调试 + 模拟器日志 |
| 硬件关联度 | 完全独立,模拟器与硬件无关 | 与STM32系列绑定,模拟器模拟特定MCU |
我个人觉得,如果你追求轻量和跨平台,LVGL的VS Code + SDL方案更灵活。如果你需要快速出原型、且目标平台就是STM32,TouchGFX的集成环境能省不少事。
2.4 核心逻辑框架图
下面这张图展示了两种环境搭建的核心流程和依赖关系。嗯,画这张图的时候,我特意把「工具链」和「运行时」分开了,方便你理解每一层的作用。
从这张图能看出来,LVGL的每一层都是可替换的——你可以换编辑器、换编译器、甚至换显示后端。TouchGFX则是一条完整的工具链,从设计到编译到运行,ST都帮你包好了。说白了,一个像乐高,一个像成品手办。
我的建议:如果你是初学者,可以先从TouchGFX入手,因为可视化设计能让你快速看到成果,建立信心。等你对GUI开发有了整体认知,再回头玩LVGL,你会发现「原来底层是这么回事」。我当年就是先学的TouchGFX,后来转LVGL时,理解起来快很多。