STM32 固件编译与烧录
本篇适用于使用 Keil MDK 5 和 ST-LINK/V2 的 1024Lab 产品。操作方法通用,芯片型号、编译器版本和接线方式以各产品的参数为准。
- 电脑,已装好 Keil μVision5、ST-LINK 驱动,以及产品要求的编译器和芯片支持包
- ST-LINK/V2 下载器和配套的杜邦线
- 目标板(产品的主控板或核心板)
- 产品的完整源码文件夹(从产品页“资料与下载”获取,先完整解压)

| 项目 | 参数 |
|---|---|
| 目标芯片 | STM32F103C8 |
| Keil 工程 | 源码文件夹里的 Board\MDK-ARM\Inverted_pendulum.uvprojx |
| Target 名称 | Inverted_pendulum |
| 编译器 | Arm Compiler V5.06 update 7 (build 960) |
| 芯片支持包 | Keil.STM32F1xx_DFP 2.4.0 |
| 源码下载 | 一阶旋转倒立摆 · 资料与下载 |
| 供电 | 由 ST-LINK 的 3.3V 供电,4 根线都要接 |
| 核心板 | 留在主控板上烧,或取下单独烧,都可以 |
| 电池和 TTL 模块 | 不用拆,接着或断开都不影响烧录 |
连接 ST-LINK
Section titled “连接 ST-LINK”ST-LINK 和目标板之间接 4 根线。先不要把 ST-LINK 插到电脑上。
按外壳和电路板上印的字认针脚,不要按杜邦线的颜色或别的图片猜。


| ST-LINK | 目标板 |
|---|---|
| SWCLK | SWCLK |
| SWDIO | SWIO(与 SWDIO 是同一个信号,写法不同) |
| GND | GND |
| 3.3V | 3V3(只在产品参数要求由 ST-LINK 供电时才接) |
RST、SWIM、5V 都不接。
- 按上表逐根连接,每根线两端的信号名都要对上。
- 检查四个插头都套准了单根排针,没有插偏、松脱或两根短接。
- 检查无误后,再把 ST-LINK 插到电脑 USB 上。
需要改线时,先拔掉 ST-LINK 的 USB,断开目标板的全部电源。
-
把整个源码文件夹解压到电脑。
保留文件夹层级,不要只取出一个
.c文件。 -
在 Keil 顶部单击 Project → Open Project…,进入源码文件夹,选中产品参数里写的
.uvprojx文件,单击“打开”。
单击顶部菜单栏的 Project -
确认工程已经打开:左侧出现 Project 面板和文件树,顶部的目标下拉框显示 Target 名称。

蓝框:Target 名称;左侧:工程文件树
如果窗口里只有一段源代码,说明打开的是单个文件,回到第 2 步重新打开 .uvprojx。
检查工程设置
Section titled “检查工程设置”产品的工程已经设置好,这一节只核对,不要随意修改。
打开 Options for Target
Section titled “打开 Options for Target”- 在左侧 Project 面板里单击工程目标那一行(蓝框),不要选中某个
.c文件。 - 单击工具栏上的魔术棒按钮(橙框),或按 Alt + F7。

弹出 Options for Target 窗口,里面有 Device、Target、Debug 等标签页。
核对芯片和编译器
Section titled “核对芯片和编译器”单击 Target 标签,核对左上角的芯片型号和右上角的 ARM Compiler 版本,与产品参数一致。

截图里的晶振、存储器地址和容量只属于示例工程,不要照抄到别的工程。
选择 ST-Link 调试器
Section titled “选择 ST-Link 调试器”- 单击 Debug 标签。
- 确认选中的是右侧的 Use,下拉框里是 ST-Link Debugger。
- 单击它右边的 Settings(右半边的,不是左侧模拟器旁边那个)。

确认识别到下载器和芯片
Section titled “确认识别到下载器和芯片”这一步需要 ST-LINK 已插到电脑上,目标板按产品参数正常供电。
- Unit 显示 ST-LINK/V2,下方能看到序列号和固件版本。
- Port 选 SW。
- 右侧 SW Device 出现一行 IDCODE 和设备名称,说明已经识别到芯片。数字不必和截图相同。

SW Device 一栏是空白或报错时,见下方常见问题。
核对 Flash 下载设置
Section titled “核对 Flash 下载设置”- 在同一个窗口里单击 Flash Download 标签。
- 核对 Download Function:选中 Erase Sectors,勾选 Program 和 Verify。
- 核对 Programming Algorithm 列表不是空白,并且和目标芯片对应。
- 单击 确定,回到 Options for Target 窗口。

勾选 Reset and Run 后,程序会在下载完成后立即运行。操作前确认设备处于安全状态(例如电机、摆杆周围没有手和杂物)。
核对 Utilities
Section titled “核对 Utilities”- 单击 Utilities 标签。
- 确认选中 Use Target Driver for Flash Programming,并勾选 Use Debug Driver。
- 单击 OK,回到 Keil 主界面。

这一节只是检查和保存设置,还没有把程序写入芯片。
-
单击工具栏的 Rebuild 按钮,或菜单 Project → Rebuild all target files。

左起第三个图标:Rebuild -
等下方 Build Output 停止滚动,查看最后一行。
第一次编译可能比较慢,不要反复点击。看到
0 Error(s)表示编译成功。
蓝框:0 Error(s), 0 Warning(s)
在 Keil 里,“下载”(Download)指的就是烧录:把程序写进芯片,不是从网上下载。
-
确认接线、供电和编译结果都没问题。
-
单击工具栏的 LOAD 图标,或菜单 Flash → Download。单击一次,然后等待完成。

两个入口任选其一 -
查看 Build Output 里的结果。

Programming Done = 写入完成;Verify OK = 校验通过
看到 Programming Done 和 Verify OK 就表示烧录完成。
先保存完整的报错信息,再按出问题的环节排查,不要一次改动整套设置。
找不到 Options for Target
Section titled “找不到 Options for Target”先确认打开的是 .uvprojx 工程而不是单个文件,再在左侧选中目标行,然后用魔术棒按钮或 Alt + F7。
提示找不到编译器,或编译器版本不对
Section titled “提示找不到编译器,或编译器版本不对”核对产品参数要求的编译器版本和电脑上装的是否一致(见准备里的说明)。不要为了消除提示随意换编译器。
看不到 ST-LINK
Section titled “看不到 ST-LINK”- 检查 USB 线是否插好,换一个 USB 口或数据线再试。
- 在 Windows 设备管理器里确认能看到 ST-LINK,驱动已装好。
- 关掉其他可能占用 ST-LINK 的软件(例如另一个 Keil 窗口、STM32CubeProgrammer)。
能看到 ST-LINK,但 SW Device 是空白
Section titled “能看到 ST-LINK,但 SW Device 是空白”- 断电后按接线表重新核对四根线,尤其是 SWDIO 和 SWCLK 有没有接反、GND 有没有接上。
- 确认目标板已经按产品参数供电。
- 确认 Port 选的是 SW。
下载时提示 Flash 算法错误
Section titled “下载时提示 Flash 算法错误”回到 Options for Target → Debug → Settings → Flash Download,确认 Programming Algorithm 列表不是空白,并且和芯片对应。不要随意修改存储器地址和容量。
烧录成功只代表程序已经写入,设备功能还要按产品资料检查:
- 一阶旋转倒立摆:快速上手(标定、第一次起摆)