3、第一个TouchGFX项目:创建空白项目、屏幕与容器概念、模拟器运行、下载到开发板
好,咱们正式开始动手了。前面两章聊了TouchGFX能干什么、图片资源怎么管,但光说不练假把式。这一章,我带你从零创建一个空白项目,跑通模拟器,最后把固件烧到开发板上。
你可能会问:空白项目有什么好讲的?嗯,我当年也这么想。结果第一次建项目时,光是屏幕和容器的关系就绕了半天。所以咱们一步步来,把基础打扎实。
本章核心目标:掌握TouchGFX项目的完整创建流程,理解Screen与Container的层级关系,能在模拟器上验证效果,并能将程序下载到开发板运行。
3.1 创建空白项目
打开TouchGFX Designer,点击「Create New Project」。你会看到几个模板选项:Empty、Application Template、Demo。咱们选Empty。
我个人习惯给项目起名时带上版本号,比如 MyFirstProject_v1,方便后面迭代管理。路径别用中文,TouchGFX对中文路径支持不太好,踩过这个坑的人不少。
选好目标平台。如果你用的是官方开发板,比如STM32F769I-DISCO,直接在下拉列表里选就行。如果是自己画的板子,选「Custom Board」,后面再配引脚和时钟。
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| Project Name | MyFirstProject_v1 | 不要中文、不要空格 |
| Target Platform | STM32F769I-DISCO | 按实际硬件选择 |
| Resolution | 800x480 | 与屏幕物理分辨率一致 |
| Color Depth | RGB565 | 16位色,性能与画质平衡 |
小技巧:分辨率一定要和屏幕物理分辨率一致。我曾经在一个项目里设错了分辨率,模拟器跑得好好的,下载到板子上画面全偏了,查了半天才发现是这里的问题。
点击「Create」,TouchGFX Designer会自动生成项目骨架。这个过程大概10-20秒,取决于你的电脑配置。生成完成后,你会看到左侧的「Screens」面板里已经有一个默认的Screen1了。
3.2 屏幕与容器的概念
很多初学者会把Screen和Container搞混。我刚开始接触TouchGFX时也绕了一阵,这里用最直白的方式给你讲清楚。
Screen(屏幕):你可以把它理解成一整块画布。一个Screen对应一个全屏界面,比如主菜单是一个Screen,设置页面是另一个Screen。Screen之间可以切换,切换时可以做转场动画。
Container(容器):它是Screen里面的“小盒子”。一个Screen里可以放多个Container,每个Container可以装自己的控件。比如一个仪表盘Screen,上半部分放一个Container显示车速表,下半部分放另一个Container显示油量条。
为什么要分Container?说白了就是为了复用。你做一个按钮组Container,可以在多个Screen里重复使用,不用每个Screen都重新画一遍。
注意:Container不能独立存在,必须依附于某个Screen。你可以在Screen之间拖拽Container,但不能把Container当作Screen来切换。
咱们来看一个简单的层级关系图:
在TouchGFX Designer里操作一下:双击Screen1,你会看到中间的编辑区。右侧的「Widgets」面板里,把Container拖到Screen1上。然后再从Widgets面板里拖一个Button到Container里面。试试看,是不是Container里的Button会跟着Container一起移动?这就是容器的“打包”效果。
3.3 模拟器运行
项目搭好了,总得看看效果吧?TouchGFX最方便的地方就是自带模拟器,不用硬件也能跑。
在Designer右上角,有个绿色的小三角按钮,写着「Run Simulator」。点它。
第一次运行会编译代码,时间稍长,大概30秒到1分钟。编译完成后,会弹出一个窗口,里面就是你刚才设计的界面。
避坑指南:如果模拟器启动失败,八成是以下原因:
- Visual Studio 2019/2022没装或者版本不对——TouchGFX依赖VS的编译器
- 项目路径有中文——改成全英文路径
- 分辨率设置超过显示器支持范围——调低分辨率试试
模拟器里你可以用鼠标点击按钮,看交互效果。虽然现在只是个空白界面,但至少证明你的开发环境没问题了。
我个人习惯在模拟器里先跑一遍所有界面,确认布局没问题再下载到板子。毕竟模拟器调试快,改完马上能看到,不用反复烧录。
3.4 下载到开发板
模拟器跑通了,接下来就是真刀真枪上硬件了。
首先,确保你的开发板已经通过USB连接到电脑。如果是STM32F769I-DISCO这类板子,插上USB线后电脑会识别出一个虚拟串口和一个大容量存储设备。
在TouchGFX Designer里,点击右上角的「Run Target」按钮。这个按钮会触发交叉编译,生成针对ARM Cortex-M内核的二进制文件。
编译完成后,Designer会自动调用烧录工具把固件下载到开发板。如果你用的是官方板,这个过程是全自动的。如果是自定义板卡,可能需要手动配置烧录工具路径。
| 步骤 | 操作 | 预期结果 |
|---|---|---|
| 1 | 连接开发板USB | 电脑识别到设备 |
| 2 | 点击Run Target | 开始编译,进度条滚动 |
| 3 | 编译完成 | 自动烧录,开发板重启 |
| 4 | 观察屏幕 | 显示你设计的界面 |
重要提醒:第一次下载时,如果开发板屏幕没反应,先检查这几个地方:
- USB线是不是数据线?有些线只能充电不能传数据
- 开发板的启动模式跳线是否正确?一般要设为Flash启动
- 驱动有没有装?STM32的VCP驱动需要手动安装
我曾经在一个项目里折腾了整整一下午,屏幕就是没反应。最后发现是USB线的问题——那根线只能充电,不能传数据。换了根线,一次成功。所以,别小看这些基础环节。
3.5 本章小结
这一章咱们干了三件事:建了一个空白项目,搞清楚了Screen和Container的关系,在模拟器和开发板上都跑通了。看起来简单,但这是后面所有复杂项目的基础。
你想想看,如果连空白项目都跑不通,后面加图片、做动画就更没戏了。所以这一步走稳了,后面就顺了。