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 界面层级结构 Application(应用) Screen(屏幕) Container(容器) Container(容器) Button TextArea Image Box 一个 Application 包含多个 Screen,每个 Screen 包含多个 Container,Container 内放置具体 Widget

在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的关系,在模拟器和开发板上都跑通了。看起来简单,但这是后面所有复杂项目的基础。

你想想看,如果连空白项目都跑不通,后面加图片、做动画就更没戏了。所以这一步走稳了,后面就顺了。