2. 开发环境搭建:工欲善其事,必先利其器
做嵌入式GUI开发,说白了就是跟硬件和编译器打交道。环境搭不好,后面全是坑。我见过太多新手卡在第一步——IDE装好了,工程却编译不过,或者下载器死活连不上板子。这一章,咱们就把这些基础工作一次性理清楚。
本章核心目标:装好IDE、选对板子、配好调试器、会用串口。四步走完,你就能跑第一个“Hello World”了。
2.1 IDE三选一:Keil、IAR、STM32CubeIDE
这三款IDE,我全都用过。说实话,没有绝对的好坏,只有适不适合你当前的项目。
| 特性 | Keil MDK | IAR EWARM | STM32CubeIDE |
|---|---|---|---|
| 厂商 | ARM | IAR Systems | ST(意法半导体) |
| 编译器 | ARMCC v6/v5 | IAR C/C++ | GCC(免费) |
| 代码大小限制 | 32KB(免费版) | 无限制(评估版有天数) | 无限制 |
| 调试器支持 | J-Link, ST-Link, ULINK | J-Link, I-Jet, ST-Link | ST-Link(原生),J-Link(插件) |
| GUI开发友好度 | 中等(需手动配置) | 中等 | 高(集成CubeMX图形化配置) |
| 价格 | 商业授权(较贵) | 商业授权(最贵) | 完全免费 |
我的建议:如果你是个人学习或小团队,直接用STM32CubeIDE。免费、无代码限制、还集成了图形化配置工具。但如果你以后要去大厂做量产项目,Keil和IAR还是得会——很多公司买的就是它们的商业版。
2.1.1 安装要点
安装过程其实很简单,但有几个坑我得提醒你:
- Keil:安装路径不要有中文!不要有空格!我见过有人装到“Program Files (x86)”里,结果编译时路径解析出错。老老实实装到
C:\Keil_v5就行。 - IAR:安装完记得打补丁。IAR的版本号很乱,比如8.50.1和8.50.2之间可能差了好几个bug修复。去官网下载最新补丁包。
- STM32CubeIDE:它会自动帮你装Java运行环境,但如果你电脑上已经有Java,可能会冲突。我建议先卸载旧版Java,再装CubeIDE。
避坑指南:我曾经在Win10上装Keil v5.38,结果死活打不开。查了半天,发现是杀毒软件把license验证程序给隔离了。装IDE时,记得暂时关掉杀毒软件和防火墙。
2.2 MCU开发板选型:别盲目跟风
选板子这件事,我踩过不少坑。一开始总想买最贵的、功能最多的,结果发现很多外设根本用不上,还白白浪费钱。
做嵌入式GUI,核心关注三点:屏幕接口、RAM大小、Flash大小。
| 需求等级 | 推荐芯片系列 | RAM | Flash | 典型板子 |
|---|---|---|---|---|
| 入门(跑简单UI) | STM32F103C8T6 | 20KB | 64KB | Blue Pill / 最小系统板 |
| 进阶(带触摸、动画) | STM32F407VET6 | 192KB | 512KB | 正点原子探索者 / 野火指南者 |
| 高级(复杂GUI、视频) | STM32H743 / H750 | 1MB+ | 2MB | Nucleo-H743ZI / 野火挑战者 |
我的经验:如果你只是学GUI框架,STM32F103C8T6完全够用。但如果你想跑LVGL的复杂demo,至少得F4系列起步。H7系列虽然强,但价格也贵,而且很多功能你根本用不到——别问我怎么知道的。
2.3 调试器配置:J-Link vs ST-Link
调试器是嵌入式开发的“眼睛”。没有它,你只能靠猜。我刚开始做项目时,就靠串口打印调试,效率低得可怕。
2.3.1 选哪个?
- ST-Link:买STM32开发板基本都送。便宜、够用、原生支持STM32CubeIDE。缺点是不能调试其他厂家的芯片。
- J-Link:SEGGER家的神器。速度快、功能强、支持几乎所有ARM芯片。但正版贵(几百到几千),淘宝上几十块的“教育版”其实都是盗版。
避坑指南:我曾经贪便宜买了个20块的“J-Link OB”,结果调试时经常断连,还烧坏过一块板子的SWD接口。后来换了正版J-Link EDU,再也没出过问题。调试器这东西,真的一分钱一分货。
2.3.2 接线与配置
调试器与开发板之间,通常只需要接4根线:
调试器 开发板
SWDIO ——> SWDIO
SWCLK ——> SWCLK
GND ——> GND
3.3V ——> 3.3V(可选,部分调试器可供电)
在IDE里配置调试器时,注意以下几点:
- Keil:点击“Options for Target” → “Debug” → 选择“J-Link / J-Trace Cortex”或“ST-Link Debugger”。然后点“Settings”,确认SWD模式、速度(建议先设1MHz,稳定后再提高)。
- IAR:右键工程 → “Options” → “Debugger” → “Setup” → 选择“J-Link/J-Trace”或“ST-Link”。同样在“Download”选项卡里勾选“Use flash loader(s)”。
- STM32CubeIDE:默认就是ST-Link,基本不用配。如果要用J-Link,得装插件,然后在Debug Configurations里选“SEGGER J-Link Debugging”。
小技巧:如果你用J-Link,建议装一个“J-Link Commander”工具。它可以单独测试SWD连接是否正常。输入connect命令,如果能识别到芯片ID,说明硬件连接没问题。
2.4 串口工具使用:你的第二双眼睛
调试器虽然强大,但有些场景下串口更实用。比如:打印系统运行状态、输出GUI的帧率、或者调试一些时序敏感的问题。
2.4.1 常用串口工具
| 工具名称 | 平台 | 特点 |
|---|---|---|
| PuTTY | Windows | 轻量、稳定、支持SSH/串口 |
| SecureCRT | Windows/Mac | 功能强大、支持脚本、收费 |
| MobaXterm | Windows | 集成X11、支持多标签、免费版够用 |
| screen / minicom | Linux/Mac | 命令行、轻量、适合脚本自动化 |
我个人习惯用MobaXterm。它免费、界面清爽、还能保存会话配置。每次换板子,不用重新设波特率。
2.4.2 串口配置步骤
- 确认串口号:插上USB转串口模块(或开发板自带的串口芯片),在设备管理器里看“端口(COM和LPT)”下多出来的COM口。比如COM3、COM5。
- 设置参数:波特率115200(常用)、数据位8、停止位1、无校验、无流控。这是嵌入式世界里的“标准配置”。
- 打开串口:点击连接。如果看到空白窗口,别慌——可能板子还没发数据。按一下复位键,看看有没有打印信息。
避坑指南:我曾经调一个GUI的触摸驱动,串口死活没输出。查了半天,发现是USB转串口模块的TX和RX接反了。记住:TX接RX,RX接TX,GND接GND。这个错误我犯了至少三次。
2.5 知识体系总览
下面这张图,把本章的核心内容串起来了。你可以把它当作一张“地图”,以后遇到环境问题,先看这张图定位。
2.6 验证:跑通第一个工程
环境搭好之后,怎么确认一切正常?我的做法是:新建一个空工程,只初始化系统时钟和串口,然后打印一句“Hello World from STM32”。
为什么这么做?因为串口是最基础的通信方式。如果串口能打印,说明:
- IDE编译链没问题
- 调试器下载没问题
- MCU时钟配置没问题
- 串口硬件连接没问题
这一步走通了,后面加GUI库、加触摸驱动,才有意义。否则你连问题是出在硬件还是软件上都搞不清楚。
我的习惯:每个新板子到手,我都会先跑一个“串口点灯”程序——LED闪烁的同时,串口每秒打印一次“Alive”。这样一眼就能看出板子是不是在正常工作。这个习惯帮我省了至少几十个小时的排查时间。