2、开发环境搭建:STM32CubeIDE安装、固件包获取、第一个LED工程
好,咱们正式开始动手了。
这一章我带你搭好开发环境。说白了,就是装好软件、拿到固件包、然后点亮一个LED。别小看这一步,我见过太多人卡在环境上,折腾半天连个灯都点不亮。咱们稳扎稳打,一步步来。
2.1 STM32CubeIDE安装——别选错版本
STM32CubeIDE是ST官方的一站式IDE。它集成了编辑器、编译器、调试器,还内置了CubeMX配置工具。我个人习惯用这个,省事。
下载地址:去ST官网搜“STM32CubeIDE”,找到对应你操作系统的版本。
安装要点:
- Windows用户记得勾选“添加环境变量”。我一开始没勾,后面命令行编译总报错,折腾了半天。
- Linux用户注意权限问题。我曾经在Ubuntu上装完打不开,后来发现是缺少libgtk-3-dev库。
- Mac用户?嗯,我建议你还是用虚拟机吧。ST官方对Mac的支持一直不太上心。
安装完成后,第一次启动会提示你选择工作空间(workspace)。我建议单独建一个文件夹,比如 D:\STM32Workspace。别放桌面,也别放C盘。
2.2 固件包获取——版本匹配很重要
固件包就是ST官方提供的HAL库和中间件。咱们做STM32U5,需要下载对应的固件包。
获取方式有两种:
- 在线下载:在CubeIDE里新建工程时,它会自动检测并下载。但速度嘛……你懂的。
- 离线包:去ST官网搜“STM32CubeU5”,下载最新版本。我建议用这个,一次下载,到处使用。
下载完成后,解压到某个固定目录。比如 D:\STM32Cube\Repository。然后在CubeIDE里设置路径:
Window → Preferences → STM32Cube → Firmware Updater
→ 添加本地仓库路径
嗯,这一步很多人会忘。你想想看,每次新建工程都去在线下载,多浪费时间。
2.3 第一个LED工程——从零开始
好,环境搭好了,咱们来点实际的。点亮一个LED,这是嵌入式界的“Hello World”。
步骤一:新建工程
File → New → STM32 Project
→ 在Board Selector里搜索“STM32U5”
→ 选择你手头的开发板型号(比如NUCLEO-U575ZI-Q)
→ Next → 输入工程名(比如“LED_Blink”)
→ Finish
这里要注意,如果你用的是自己画的板子,就选“Empty Project”,然后手动选芯片型号。我刚开始做项目时,就吃过这个亏——选了开发板型号,结果引脚对不上。
步骤二:配置引脚
工程创建后,会自动打开CubeMX的图形化配置界面。咱们要做的:
- 在Pinout视图里,找到LED对应的引脚。NUCLEO-U575上,LED是PB14。
- 右键PB14,选择
GPIO_Output。 - 在左侧
System Core → GPIO里,配置输出模式为Push-Pull,速度选Low。
步骤三:生成代码
点击右上角的 Generate Code。CubeIDE会帮你生成初始化代码。你只需要在 main.c 的 while(1) 循环里加几行:
/* 用户代码开始 */
while (1)
{
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
HAL_Delay(500); // 延时500ms
}
/* 用户代码结束 */
注意看,LED_GPIO_Port 和 LED_Pin 是CubeMX自动生成的宏定义。你不需要自己记引脚号。这就是用CubeMX的好处。
步骤四:编译与下载
- 点击工具栏的锤子图标(Build),编译工程。第一次编译会慢一些,因为要编译整个HAL库。
- 连接开发板,点击绿色的虫子图标(Debug),或者直接点Run。
- 如果一切顺利,你会看到板子上的LED开始闪烁。
- USB线是不是数据线?有些线只能充电。
- 驱动装了没?Windows下需要装ST-Link驱动。
- 板子上的跳线帽是不是正确?NUCLEO板默认是好的,但自己画的板子要检查。
2.4 避坑指南——我踩过的那些坑
做这个实验,有几个地方容易出问题。我一个个说:
- 引脚配置错误:我刚开始用STM32U5时,以为GPIO默认就是推挽输出。结果灯死活不亮。后来才发现,U5的GPIO复位后是模拟模式。你想想看,模拟模式下引脚既不输出高也不输出低,灯怎么会亮?
- 时钟配置不对:如果你用的是外部晶振,记得在CubeMX里把HSE使能。我有个项目,板子上的LED闪得特别慢,查了半天发现是HAL_Delay的时钟源没配好。
- 优化等级太高:调试阶段,我建议把优化等级设为
-O0。曾经我把优化开到-Os,结果HAL_Delay被优化掉了,LED一直亮着不闪。嗯,从那以后我调试时都用-O0。
2.5 验证与调试——灯亮了然后呢?
LED闪烁了,恭喜你,环境搭建成功了。但咱们不能止步于此。我建议你做几个小实验:
- 改变延时时间,看看闪烁频率的变化。
- 用逻辑分析仪抓一下PB14的波形,看看是不是精确的500ms。
- 试着用按键控制LED的亮灭(下一章会用到)。
这些实验能帮你熟悉CubeIDE的调试功能。比如设置断点、查看变量、单步执行。我刚开始做嵌入式时,就是靠这些基本功一点点积累起来的。
好,这一章就到这儿。下一章咱们开始接触TrustZone——这才是STM32U5的真正亮点。