2. 嵌入式HMI与TouchGFX概述
说实话,很多初学者一上来就急着写代码,结果卡在环境配置上大半天。我见过不少学员,明明硬件没问题,就是工具链没搭对,编译报错一堆,最后怀疑人生。
这一章,咱们就把开发环境彻底搞定。你跟着我的步骤走,保证一次过。
本章核心目标:完成从芯片配置、图形界面设计到代码编译调试的全链路工具链搭建。
2.1 整体工具链概览
先看一张图,你就明白这些工具之间的关系了。
你看,整个流程是单向的:先用 CubeMX 配好芯片,再在 Designer 里画界面,最后在 IDE 里写逻辑、编译下载。每一步都有明确的输入输出。
2.2 STM32CubeMX 安装与配置
STM32CubeMX 是 ST 官方出的芯片配置工具。说白了,它就是帮你省掉手写初始化代码的苦力活。
2.2.1 下载与安装
- 去 ST 官网下载:搜索 "STM32CubeMX",找到最新版本。我建议下载 6.x 以上版本,对 TouchGFX 支持更好。
- 安装过程:一路 Next 就行。注意安装路径不要有中文,否则后面编译可能出奇怪的问题。
- 安装固件包:打开 CubeMX,点击
Help → Manage embedded software packages,找到你用的芯片系列(比如 STM32F4、STM32H7),下载对应的固件包。
我的习惯:只下载当前项目需要的固件包,别全下。全下的话,光下载就得半小时,还占硬盘空间。
2.2.2 关键配置项
创建新项目后,有几步特别重要:
| 配置项 | 推荐设置 | 说明 |
|---|---|---|
| RCC(时钟) | HSE + PLL,主频拉到最高 | TouchGFX 对 CPU 性能有要求,频率越高越流畅 |
| LTDC(显示控制器) | 根据屏幕参数配置 | 分辨率、像素时钟、HBP/VBP 等必须和屏幕手册一致 |
| DMA2D | 开启,配置为图形加速 | 没有 DMA2D,TouchGFX 性能直接砍半 |
| FMC(外部存储器) | 如果使用外部 SDRAM 则开启 | 大分辨率屏幕必须外扩显存 |
| TouchGFX Generator | 勾选并选择版本 | 这是 CubeMX 和 TouchGFX 的桥梁,必须配 |
我曾经踩过的坑:LTDC 的像素时钟配错了,屏幕死活不亮。后来用示波器量才发现时钟频率差了一倍。一定要对着屏幕数据手册逐项核对。
2.3 TouchGFX Designer 安装与配置
TouchGFX Designer 是图形界面设计工具。你拖拖控件、调调颜色,它就能生成 C++ 代码。
2.3.1 安装步骤
- 从 ST 官网下载 TouchGFX Designer(注意不是 TouchGFX Engine,那是运行时库)。
- 安装时选择 Custom 模式,把 Examples 和 Templates 都勾上。这些例程很有参考价值。
- 安装完成后,打开 Designer,它会自动检测 CubeMX 的安装路径。
2.3.2 与 CubeMX 的联动
这里有个关键操作:
- 在 CubeMX 中配置好芯片后,点击 Project → Generate Code,会生成一个
.ioc文件。 - 在 Designer 中新建项目时,选择 Create from STM32CubeMX,导入刚才的
.ioc文件。 - Designer 会自动读取芯片型号、屏幕参数、引脚分配等信息。
注意:如果你先开了 Designer 再改 CubeMX 配置,记得在 Designer 里点 File → Reload from CubeMX,否则两边不同步。
2.4 MDK-ARM / IAR 工具链集成
工具链就是编译器 + 调试器。我两种都用过,各有千秋。
2.4.1 MDK-ARM(Keil)
MDK 在国内用得最多,上手快,资料多。
- 安装 MDK-ARM:去 Keil 官网下载,安装时选对芯片型号(比如 STM32F4xx_DFP)。
- 配置 TouchGFX 插件:MDK 需要安装 TouchGFX Pack。在 Pack Installer 里搜索 "TouchGFX",安装最新版。
- 导入项目:在 Designer 中生成代码后,用 MDK 打开
.uvprojx文件,直接编译。
我个人习惯:MDK 的编译速度比 IAR 快一点,但调试功能 IAR 更强。小项目用 MDK,大项目用 IAR。
2.4.2 IAR EWARM
IAR 的优化做得更好,代码体积小,适合资源受限的场景。
- 安装 IAR:注意版本,建议 8.5 以上,对 C++17 支持更好。
- 配置 TouchGFX 库路径:在 IAR 中打开项目后,需要手动添加 TouchGFX 的库文件路径。路径一般在
C:\TouchGFX\4.x.x\lib\core\cortex_m4f\iar。 - 设置预处理器:在项目选项中添加
SIMULATOR=0和USE_STM32H7(根据芯片调整)。
我曾经遇到的情况:IAR 编译通过,但下载后屏幕没反应。查了半天,发现是链接脚本里堆栈大小设小了,TouchGFX 的动态内存分配失败。把堆栈从 0x400 改成 0x1000 就好了。
2.5 工具链对比与选择建议
| 对比项 | MDK-ARM | IAR EWARM |
|---|---|---|
| 上手难度 | 低,中文资料多 | 中,英文资料为主 |
| 编译速度 | 较快 | 中等 |
| 代码优化 | 良好 | 优秀(体积更小) |
| 调试功能 | 基础 | 强大(支持 RTOS 感知) |
| TouchGFX 集成 | 原生支持,一键导入 | 需手动配置库路径 |
| 价格 | 中等(有免费版限制 32KB) | 较高(有评估版) |
我的建议是:如果你是新手,先用 MDK,省心。等做复杂项目了,再考虑 IAR。
2.6 验证环境是否搭建成功
环境搭没搭好,跑个例程就知道了。
- 在 TouchGFX Designer 中打开一个官方例程(比如
STM32H7B3I_DK的演示)。 - 点击 Generate Code,生成完整工程。
- 用 MDK 或 IAR 打开生成的工程,编译。
- 下载到开发板,看屏幕是否正常显示。
如果屏幕亮了,恭喜你,环境搭建成功!
如果没亮,别慌。检查以下几点:
- CubeMX 中 LTDC 的引脚分配是否正确?
- 屏幕的排线是否插紧?
- 电源是否足够?有些屏幕需要 3.3V 和 5V 双供电。