STM32F103C8T6烧录方式全解析:ST-Link、J-Link与USB转TTL对比
2026/9/25 1:03:26 网站建设 项目流程

1. 三种烧录方式到底怎么选:先搞清楚你手里有什么

STM32F103C8T6 这颗芯片,可以说是国内嵌入式入门圈子里绕不开的一块“神级 MCU”。72MHz 主频、64KB Flash、20KB SRAM、丰富的外设接口,加上最小系统板价格便宜到离谱,几乎每个电子相关专业的学生、每个想入门嵌入式的爱好者,手里都至少有一两块。但芯片本身再好,程序烧不进去就是一块砖。我见过太多新手卡在“Keil 编译通过了,但板子没反应”这一步,折腾一整天,最后发现是烧录方式选错了,或者接线接反了。

这篇内容就是把我这些年用 STM32F103C8T6 烧录程序踩过的坑、总结的经验,一次性讲清楚。核心围绕三种主流烧录方式展开:ST-LinkJ-LinkUSB转TTL。这三种方式各有各的适用场景,没有绝对的优劣,关键看你的需求是什么、手里有什么工具、板子上引出了哪些接口。我会从原理、接线、软件配置、实测速度、常见报错五个维度逐一拆解,最后给出一张对比表和选择建议,让你看完就能直接动手。

不管你是刚买了一块最小系统板不知道怎么下手,还是已经用过其中一种方式但想了解其他方案的差异,这篇内容都能帮你省下大量试错时间。尤其是那些遇到“No target connected”“Can not connect to target”“蓝屏死机”之类问题的朋友,我在后面的排查章节里会逐一给出解决方案。

2. 烧录之前必须搞清楚的硬件基础

2.1 STM32F103C8T6 的启动模式与烧录接口

在讲三种烧录方式之前,有一个基础概念必须先说清楚,否则后面很多现象你无法理解。STM32F103C8T6 有两个关键的启动配置引脚:BOOT0BOOT1。这两个引脚的电平组合决定了芯片上电后从哪里开始执行代码。

BOOT0BOOT1启动模式用途说明
0X主闪存存储器正常运行模式,从 Flash 启动
10系统存储器进入出厂 Bootloader,用于串口下载
11内置 SRAM调试用,一般不用

这个表格非常关键。当你用USB转TTL方式烧录时,必须把 BOOT0 跳到 1、BOOT1 跳到 0,让芯片进入系统存储器模式,也就是运行出厂固化的 Bootloader。烧录完成后,再把 BOOT0 跳回 0,重新上电,芯片才会运行你刚烧进去的程序。很多新手烧录完发现板子没反应,90% 的原因就是忘了把 BOOT0 跳回来。

ST-LinkJ-Link这两种方式,走的是 SWD 或 JTAG 调试接口,直接操作芯片内部的 Flash 控制器,不需要依赖出厂 Bootloader,所以不需要动 BOOT 跳线。这是它们相比 USB转TTL 最大的便利之处。

STM32F103C8T6 的 SWD 接口只需要两根信号线:SWDIO(数据线)和SWCLK(时钟线),再加上GND3.3V,一共四根线就能完成烧录和调试。最小系统板上通常会引出这四个引脚,一般标注为 SWDIO、SWCLK、GND、3V3,有的板子还会额外引出NRST(复位引脚),建议一并接上,后面讲原因。

2.2 最小系统板的引脚布局与接线要点

市面上常见的 STM32F103C8T6 最小系统板,尺寸大概是 53mm × 22mm,板子两侧各有一排排针,间距 2.54mm,可以直接插在面包板上。板子一端是 Micro USB 接口(只供电,不带数据功能),另一端是 SWD 调试接口排针。

接线的时候有几个细节需要注意。第一,GND 必须共地,这是所有通信的基础,不管是 SWD 还是串口,下载器和目标板之间必须有一根可靠的 GND 连接。第二,3.3V 不要重复供电,如果最小系统板已经通过 USB 线供了电,就不要再从下载器的 3.3V 引脚往板子上供电,两个电源打架轻则烧录失败,重则烧毁芯片。第三,杜邦线不要太长,SWD 信号在高速通信时对线长敏感,超过 20cm 就容易出现连接不稳定的情况,建议控制在 10cm 以内。

还有一个容易被忽略的点:最小系统板上的BOOT0 跳线帽。出厂默认一般是接在 0 位置(GND),也就是正常运行模式。如果你要用串口烧录,需要把它拔下来插到 1 位置(3.3V)。有些板子的跳线帽质量不好,接触不良,也会导致烧录失败,建议用万用表量一下确认。

2.3 三种烧录方式的本质区别

从原理层面理解这三种方式的差异,能帮你更好地排查问题。

ST-LinkJ-Link本质上都是调试器,它们通过 SWD 或 JTAG 协议与芯片内部的调试模块通信。芯片内部有一个叫Debug Access Port的硬件模块,调试器通过它可以直接读写 Flash 存储器、寄存器、内存,还能设置断点、单步执行。这种方式速度最快,功能最强,支持在线调试。

USB转TTL走的是完全不同的路径。它利用的是芯片出厂时固化在系统存储器里的一段 Bootloader 程序。芯片上电后,如果检测到 BOOT0=1、BOOT1=0,就从系统存储器启动,运行这段 Bootloader。Bootloader 会通过USART1(PA9 为 TX、PA10 为 RX)等待上位机发送固件数据,接收完成后写入 Flash。这种方式不需要额外的调试器,一个几块钱的 USB转TTL 模块就能搞定,但速度慢,不支持调试,而且每次烧录都要手动切换 BOOT 跳线。

理解了这些差异,你就能明白为什么 ST-Link 插上就能用,而 USB转TTL 要折腾跳线;为什么 J-Link 功能强大但价格贵,而 ST-Link 性价比高但只支持 ST 芯片。下面逐一展开。

3. ST-Link 烧录实战:性价比最高的选择

3.1 ST-Link 的版本选择与驱动安装

ST-Link 是 ST 官方推出的调试器,市面上常见的有ST-Link V2ST-Link V2-1两个版本。V2 是独立的小方块,价格十几块钱,支持 SWD 和 SWIM 接口;V2-1 通常集成在 Nucleo 开发板上,功能更全,支持虚拟串口和虚拟U盘。对于 STM32F103C8T6 来说,V2 完全够用。

买 ST-Link 的时候要注意,市面上有大量山寨版本,芯片可能是用国产替代方案做的。这些山寨版大部分能用,但偶尔会遇到固件版本不兼容的问题。我实测下来,只要驱动装对了,山寨版烧录 STM32F103C8T6 基本没问题。

驱动安装有两种方式。第一种是安装STM32 ST-LINK Utility,这个软件自带驱动,安装完成后插上 ST-Link,设备管理器里会出现 “STMicroelectronics STLink dongle” 设备。第二种是安装STM32CubeProgrammer,这是 ST 官方新推出的烧录工具,功能更全,支持 ST-Link、UART、USB DFU 等多种方式,推荐优先使用。

注意:如果你之前装过旧版驱动,建议先在设备管理器里卸载干净,再装新驱动,否则可能出现“设备无法识别”的问题。

3.2 硬件接线:四根线搞定

ST-Link 与 STM32F103C8T6 最小系统板的接线非常简单,只需要四根线:

ST-Link 引脚最小系统板引脚说明
SWDIOSWDIO (PA13)数据线
SWCLKSWCLK (PA14)时钟线
GNDGND共地
3.3V3V3供电(可选)

如果最小系统板已经通过 USB 供电,3.3V 这根线可以不接。但 GND 必须接,SWDIO 和 SWCLK 必须接。有些板子的 SWD 接口标注可能是 “DIO” 和 “CLK”,对应关系是一样的。

我建议把NRST也接上。NRST 是复位引脚,接上之后 ST-Link 可以在烧录前自动复位芯片,避免因为芯片运行状态导致连接失败。尤其是当芯片里已经烧了一个进入低功耗模式或者死循环的程序时,不接 NRST 很可能连不上。

3.3 软件配置与烧录步骤

STM32CubeProgrammer烧录的完整流程如下:

  1. 打开 STM32CubeProgrammer,在右上角选择 “ST-LINK” 作为连接方式。
  2. 点击 “Connect” 按钮,如果接线正确,软件会识别到芯片,显示芯片型号、Flash 大小等信息。
  3. 在左侧选择 “Erasing & Programming”,点击 “Browse” 选择编译好的.hex.bin文件。
  4. 勾选 “Verify programming” 和 “Run after programming”,点击 “Start Programming”。

烧录过程通常只需要几秒钟。如果一切正常,你会看到进度条走完,提示 “Programming complete”。

STM32 ST-LINK Utility的流程类似:打开软件,点击 “Target” → “Connect”,连接成功后点击 “Target” → “Program & Verify”,选择文件,点击 “Start”。

Keil MDK的话,需要在 “Options for Target” → “Debug” 里选择 “ST-Link Debugger”,然后点击 “Settings” 确认能识别到芯片。之后直接点 “Download” 按钮就能烧录。

3.4 实测速度与稳定性

我用一个 20KB 左右的固件做了对比测试。ST-Link V2 在 SWD 模式下,烧录 20KB 固件大约需要2-3 秒,包含擦除和校验。这个速度对于日常开发来说完全够用。稳定性方面,只要接线可靠,基本不会出现连接失败的情况。偶尔遇到 “No target connected”,通常是接线松动或者芯片处于低功耗状态,接上 NRST 就能解决。

ST-Link 最大的优势是便宜、够用、生态好。十几块钱的价格,支持所有 STM32 芯片,配合 Keil、IAR、CubeProgrammer 都能用。如果你只玩 ST 的芯片,ST-Link 是最省心的选择。

4. J-Link 烧录实战:功能最强但门槛也最高

4.1 J-Link 的版本差异与兼容性问题

J-Link 是 SEGGER 公司推出的调试器,在业界口碑极好,支持几乎所有主流 MCU 架构。但 J-Link 的版本非常多,从几百块的正版到几十块的山寨版,功能和稳定性差异巨大。

正版 J-Link 价格不菲,个人开发者一般会选择J-Link OB(On-Board)或者山寨版。山寨版 J-Link 通常是用 STM32F103 或者国产芯片做的,刷了 SEGGER 的固件。这些山寨版在烧录 STM32F103C8T6 时基本能用,但有几个坑需要注意。

第一个坑是固件版本。新版 J-Link 驱动会检测调试器是否为正版,如果是山寨版,可能会弹出 “J-Link clone detected” 的警告,甚至直接拒绝工作。解决办法是降级驱动版本,或者使用特定版本的 J-Link 固件。我实测下来,J-Link 驱动版本在 V6.xx 左右对山寨版比较友好。

第二个坑是芯片支持列表。有些国产替代芯片(比如某些 CW32 系列)需要特定版本的 J-Link 才能支持。如果你用的是国产 MCU,买 J-Link 之前最好确认一下驱动版本是否支持。

4.2 接线方式与 SWD 模式配置

J-Link 的接线和 ST-Link 类似,也是 SWDIO、SWCLK、GND、3.3V 四根线。但 J-Link 的 20 针标准接口和 ST-Link 的简易接口不一样,需要转接板或者杜邦线。

J-Link 的 20 针接口中,常用的引脚是:

J-Link 20针引脚信号对应最小系统板
Pin 1VTref3.3V
Pin 7SWDIOSWDIO
Pin 9SWCLKSWCLK
Pin 4/6/8/10...GNDGND
Pin 15nRESETNRST

用杜邦线连接时,一定要对照 J-Link 外壳上印的引脚定义,不同厂家的转接板标注可能不一样。我见过有人把 SWDIO 和 SWCLK 接反了,结果一直连不上,折腾了半天才发现。

4.3 J-Flash 烧录工具的使用

J-Link 配套的烧录工具是J-Flash。使用流程如下:

  1. 打开 J-Flash,新建工程,选择目标芯片型号 “STM32F103C8”。
  2. 在 “Target Interface” 里选择 “SWD”,速度可以先设低一点,比如 1000kHz,连接稳定后再提高。
  3. 点击 “Target” → “Connect”,连接成功后会在日志窗口显示芯片信息。
  4. 打开要烧录的.hex.bin文件,点击 “Target” → “Production Programming” 或者直接按 F5 烧录。

J-Flash 的界面比 ST-Link Utility 复杂一些,但功能更强。它支持批量烧录、序列号自动递增、加密烧录等高级功能,适合量产场景。

4.4 实测速度与适用场景

J-Link 的烧录速度是三种方式中最快的。同样 20KB 固件,J-Link 在 SWD 模式下大约1-2 秒就能完成,比 ST-Link 快一些。如果开启高速模式,速度还能更快。

但 J-Link 的优势不仅仅在速度。它支持在线调试RTT 实时传输Flash 断点等高级功能,对于复杂项目的开发调试非常有帮助。如果你需要频繁打断点、查看变量、分析程序运行状态,J-Link 的体验明显优于 ST-Link。

不过对于 STM32F103C8T6 这种入门级芯片来说,J-Link 的优势有点“杀鸡用牛刀”。除非你手里已经有 J-Link,或者需要调试更复杂的项目,否则专门为 STM32F103C8T6 买一个 J-Link 性价比不高。

5. USB转TTL 烧录实战:最便宜但最折腾

5.1 USB转TTL 模块的选择与驱动

USB转TTL 模块的核心芯片常见的有CH340CP2102PL2303等。CH340 最便宜,几块钱就能买到,但驱动安装偶尔会出问题;CP2102 稳定性好一些,价格稍贵;PL2303 老版本芯片在 Win10/Win11 上兼容性较差,不建议买。

买 USB转TTL 模块时,注意要买支持 3.3V 电平的。STM32F103C8T6 的 USART 引脚是 3.3V 电平,如果模块输出的是 5V 电平,长期使用可能损坏芯片。很多模块上有 3.3V 和 5V 的跳线帽,记得跳到 3.3V。

驱动方面,CH340 需要安装厂商提供的驱动,CP2102 需要安装 Silicon Labs 的驱动。安装完成后,插上模块,设备管理器里会出现一个 COM 口,记住这个端口号,后面配置软件时要用。

5.2 BOOT 跳线设置与串口接线

USB转TTL 烧录的关键在于BOOT 跳线。烧录前必须把 BOOT0 跳到 1(3.3V),BOOT1 跳到 0(GND)。烧录完成后,把 BOOT0 跳回 0,重新上电。

接线方面,USB转TTL 模块与最小系统板的连接如下:

USB转TTL 引脚最小系统板引脚说明
TXDPA10 (RX)发送接接收
RXDPA9 (TX)接收接发送
GNDGND共地
3.3V3V3供电(可选)

注意 TXD 和 RXD 是交叉连接的,模块的发送接芯片的接收,模块的接收接芯片的发送。很多人第一次接的时候直接 TXD 对 TXD,结果当然连不上。

5.3 使用 FlyMcu 或 STM32CubeProgrammer 烧录

串口烧录工具常用的是FlyMcu,国产软件,界面简单,专门用于 STM32 串口下载。使用流程:

  1. 打开 FlyMcu,选择对应的 COM 口。
  2. 波特率一般选 115200,如果烧录失败可以降低到 57600 或 38400。
  3. 选择要烧录的.hex文件。
  4. 勾选 “编程后执行” 和 “校验”。
  5. 点击 “开始编程”。

如果一切正常,你会看到进度条走完,提示 “编程成功”。然后拔掉 BOOT0 跳线帽,重新插到 0 位置,按一下复位键,程序就开始运行了。

STM32CubeProgrammer 也支持串口烧录。在连接方式里选择 “UART”,选择 COM 口和波特率,点击 “Connect”,然后选择文件烧录即可。

5.4 实测速度与常见问题

串口烧录的速度是三种方式中最慢的。同样 20KB 固件,在 115200 波特率下大约需要10-15 秒。如果固件更大,时间会更长。而且串口烧录不支持调试,每次烧录都要手动切换 BOOT 跳线,非常繁琐。

串口烧录最常见的失败原因是BOOT 跳线没设对。如果 BOOT0 没有跳到 1,芯片从 Flash 启动,Bootloader 不会运行,上位机自然连不上。另一个常见原因是串口被占用,比如你同时打开了串口助手和 FlyMcu,两者抢同一个 COM 口,就会导致连接失败。

还有一个坑是CH340 驱动兼容性。某些版本的 CH340 驱动在 Win11 上会出现 “无法识别的 USB 设备” 或者蓝屏。解决办法是去官网下载最新驱动,或者换用 CP2102 模块。

6. 三种方式实测对比与选择建议

6.1 速度、成本、易用性对比

对比维度ST-LinkJ-LinkUSB转TTL
价格10-30元50-300元5-15元
烧录速度(20KB)2-3秒1-2秒10-15秒
是否需要跳线
支持在线调试
支持芯片范围仅ST几乎所有支持串口Bootloader的芯片
驱动稳定性山寨版一般CH340一般,CP2102好
适合场景日常开发复杂项目/量产应急/极简需求

6.2 不同场景下的选择建议

如果你是初学者,刚买了一块 STM32F103C8T6 最小系统板,我建议直接买一个 ST-Link V2。十几块钱,接线简单,配合 Keil 或 CubeProgrammer 都能用,不需要折腾 BOOT 跳线,烧录速度快,还能在线调试。这是最省心的方案。

如果你手里已经有 J-Link,或者需要调试更复杂的项目,那就用 J-Link。它的调试功能更强,烧录速度更快,但要注意山寨版的兼容性问题。

如果你预算极其有限,或者只是偶尔烧录一次,USB转TTL 也能用。但要做好心理准备,每次烧录都要切换 BOOT 跳线,速度慢,而且不支持调试。适合应急场景。

6.3 关于国产替代芯片的补充说明

最近几年国产 MCU 发展很快,很多 STM32F103C8T6 的替代芯片在引脚和功能上兼容。这些芯片用 ST-Link 烧录时,大部分能正常识别,但偶尔会遇到 “Flash 大小识别错误” 或者 “无法擦除” 的问题。用 J-Link 的话,需要确认驱动版本是否支持对应芯片。USB转TTL 方式对国产芯片的兼容性取决于芯片是否内置了兼容的 Bootloader,这个要具体芯片具体分析。

7. 常见问题排查与避坑指南

7.1 连接失败类问题

问题一:ST-Link 提示 “No target connected”

排查思路:先检查接线,确认 SWDIO、SWCLK、GND 三根线接对且接触良好。然后检查目标板是否供电,3.3V 是否正常。如果都正常,尝试接上 NRST 引脚,或者在 CubeProgrammer 里把 “Connect Under Reset” 模式打开。还有一种可能是芯片里运行的程序把 SWD 引脚复用了,导致调试接口被占用,这时候需要按住复位键再点击连接。

问题二:J-Link 提示 “Cannot connect to target”

排查思路:确认 J-Link 驱动版本是否兼容,山寨版 J-Link 建议用 V6.xx 驱动。检查 SWD 速度是否设得太高,降低到 1000kHz 试试。确认目标芯片型号选择正确,STM32F103C8T6 的 Device 选 “STM32F103C8”。

问题三:串口烧录提示 “无法打开串口”

排查思路:确认 COM 口选择正确,设备管理器里能看到。关闭其他占用串口的软件,比如串口助手、Putty 等。检查 BOOT0 是否跳到 1,BOOT1 是否跳到 0。降低波特率试试。

7.2 烧录成功但程序不运行

这是新手最常遇到的问题。烧录显示成功,但板子没反应。原因通常有三个:

第一,BOOT0 没有跳回 0。串口烧录完成后,必须把 BOOT0 跳回 GND,否则芯片每次上电都进入 Bootloader,不会运行你的程序。

第二,没有复位。烧录完成后,按一下板子上的复位键,或者重新上电,芯片才会从 Flash 重新启动。

第三,程序本身有问题。比如时钟配置错误、引脚定义不对、没有写主循环等。这时候需要用调试器单步跟踪,确认程序是否真的在运行。

7.3 驱动与软件兼容性问题

蓝屏问题:某些山寨 ST-Link 或者 CH340 驱动在 Win10/Win11 上会导致蓝屏。解决办法是卸载旧驱动,去官网下载最新版驱动。如果还是蓝屏,换一个调试器或者换一台电脑试试。

Keil 识别不到调试器:在 “Options for Target” → “Debug” 里确认选择了正确的调试器,点击 “Settings” 确认能识别到设备。如果识别不到,检查驱动是否安装,USB 线是否插好。

CubeProgrammer 连接超时:把 SWD 速度降低,勾选 “Connect Under Reset”,检查 NRST 是否接好。

7.4 独家避坑技巧

第一个技巧:用万用表确认杜邦线通断。很多烧录失败是因为杜邦线内部断了,外表看不出来。花一分钟量一下,能省下半小时排查时间。

第二个技巧:准备一个已知能用的最小系统板作为对照。当你怀疑是板子问题还是调试器问题时,换一块确认能用的板子试试,能快速定位问题。

第三个技巧:ST-Link 的固件可以升级。如果遇到兼容性问题,用 ST-Link Utility 或者 CubeProgrammer 升级固件试试。但注意,山寨版 ST-Link 升级固件有风险,可能变砖。

第四个技巧:串口烧录时先点“开始编程”再给板子上电。FlyMcu 有一个 “DTR 低电平复位” 选项,勾选后软件会自动控制复位,省去手动操作。但前提是你的 USB转TTL 模块引出了 DTR 和 RTS 引脚。

8. 烧录之外的几个实用建议

8.1 固件加密与读保护

STM32F103C8T6 支持读保护功能,可以防止别人通过调试器读出你烧录的固件。在 CubeProgrammer 里可以设置 “Read Out Protection” 为 Level 1,这样通过 SWD 就读不出 Flash 内容了。但注意,一旦开启读保护,再次烧录时需要先解除保护,而解除保护会擦除整个 Flash。所以量产时再开,开发阶段不要开。

8.2 批量烧录的效率优化

如果你需要烧录多块板子,ST-Link 和 J-Link 都支持批量烧录。J-Flash 可以配置成 “Production Programming” 模式,按一下按键就自动烧录下一块。ST-Link 的话,可以用 CubeProgrammer 的命令行版本写一个批处理脚本,自动烧录并校验。

8.3 最小系统板插面包板的注意事项

STM32F103C8T6 最小系统板插在面包板上时,注意排针间距是 2.54mm,面包板中间槽两侧的孔距也是 2.54mm,但板子宽度可能刚好跨过中间槽。插的时候要对准,不要硬按,避免把排针压弯。另外,面包板的接触电阻比较大,SWD 信号经过面包板可能会不稳定,建议烧录时直接用杜邦线连接,不要经过面包板。

8.4 关于国产替代芯片的烧录经验

国产替代芯片在烧录时,ST-Link 有时会识别成 “Unknown device” 或者 Flash 大小显示错误。这时候可以尝试在 CubeProgrammer 里手动选择芯片型号,或者用 J-Link 配合对应版本的驱动。串口烧录的话,需要确认国产芯片的 Bootloader 是否兼容 ST 的协议,大部分兼容,但少数需要专用工具。

我在实际使用中的体会是,ST-Link 配合 CubeProgrammer 是 STM32F103C8T6 最稳妥的烧录方案,没有之一。J-Link 适合手里已经有设备且需要高级调试功能的场景,USB转TTL 则是预算极度受限或者应急时的备选。把 BOOT 跳线、接线、驱动这三件事搞清楚,基本上就不会再被烧录问题卡住了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询