资讯详情

STM32F103C8T6烧录方式全解析:ST-Link、J-Link与USB转TTL对比

📅 2026/9/25 1:03:27 | 华诺云谱 👁 阅读
STM32F103C8T6烧录方式全解析:ST-Link、J-Link与USB转TTL对比
1. 三种烧录方式到底怎么选先搞清楚你手里有什么STM32F103C8T6 这颗芯片可以说是国内嵌入式入门圈子里绕不开的一块“神级 MCU”。72MHz 主频、64KB Flash、20KB SRAM、丰富的外设接口加上最小系统板价格便宜到离谱几乎每个电子相关专业的学生、每个想入门嵌入式的爱好者手里都至少有一两块。但芯片本身再好程序烧不进去就是一块砖。我见过太多新手卡在“Keil 编译通过了但板子没反应”这一步折腾一整天最后发现是烧录方式选错了或者接线接反了。这篇内容就是把我这些年用 STM32F103C8T6 烧录程序踩过的坑、总结的经验一次性讲清楚。核心围绕三种主流烧录方式展开ST-Link、J-Link、USB转TTL。这三种方式各有各的适用场景没有绝对的优劣关键看你的需求是什么、手里有什么工具、板子上引出了哪些接口。我会从原理、接线、软件配置、实测速度、常见报错五个维度逐一拆解最后给出一张对比表和选择建议让你看完就能直接动手。不管你是刚买了一块最小系统板不知道怎么下手还是已经用过其中一种方式但想了解其他方案的差异这篇内容都能帮你省下大量试错时间。尤其是那些遇到“No target connected”“Can not connect to target”“蓝屏死机”之类问题的朋友我在后面的排查章节里会逐一给出解决方案。2. 烧录之前必须搞清楚的硬件基础2.1 STM32F103C8T6 的启动模式与烧录接口在讲三种烧录方式之前有一个基础概念必须先说清楚否则后面很多现象你无法理解。STM32F103C8T6 有两个关键的启动配置引脚BOOT0和BOOT1。这两个引脚的电平组合决定了芯片上电后从哪里开始执行代码。BOOT0BOOT1启动模式用途说明0X主闪存存储器正常运行模式从 Flash 启动10系统存储器进入出厂 Bootloader用于串口下载11内置 SRAM调试用一般不用这个表格非常关键。当你用USB转TTL方式烧录时必须把 BOOT0 跳到 1、BOOT1 跳到 0让芯片进入系统存储器模式也就是运行出厂固化的 Bootloader。烧录完成后再把 BOOT0 跳回 0重新上电芯片才会运行你刚烧进去的程序。很多新手烧录完发现板子没反应90% 的原因就是忘了把 BOOT0 跳回来。而ST-Link和J-Link这两种方式走的是 SWD 或 JTAG 调试接口直接操作芯片内部的 Flash 控制器不需要依赖出厂 Bootloader所以不需要动 BOOT 跳线。这是它们相比 USB转TTL 最大的便利之处。STM32F103C8T6 的 SWD 接口只需要两根信号线SWDIO数据线和SWCLK时钟线再加上GND和3.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-Link和J-Link本质上都是调试器它们通过 SWD 或 JTAG 协议与芯片内部的调试模块通信。芯片内部有一个叫Debug Access Port的硬件模块调试器通过它可以直接读写 Flash 存储器、寄存器、内存还能设置断点、单步执行。这种方式速度最快功能最强支持在线调试。USB转TTL走的是完全不同的路径。它利用的是芯片出厂时固化在系统存储器里的一段 Bootloader 程序。芯片上电后如果检测到 BOOT01、BOOT10就从系统存储器启动运行这段 Bootloader。Bootloader 会通过USART1PA9 为 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 V2和ST-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烧录的完整流程如下打开 STM32CubeProgrammer在右上角选择 “ST-LINK” 作为连接方式。点击 “Connect” 按钮如果接线正确软件会识别到芯片显示芯片型号、Flash 大小等信息。在左侧选择 “Erasing Programming”点击 “Browse” 选择编译好的.hex或.bin文件。勾选 “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 OBOn-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.3VPin 7SWDIOSWDIOPin 9SWCLKSWCLKPin 4/6/8/10...GNDGNDPin 15nRESETNRST用杜邦线连接时一定要对照 J-Link 外壳上印的引脚定义不同厂家的转接板标注可能不一样。我见过有人把 SWDIO 和 SWCLK 接反了结果一直连不上折腾了半天才发现。4.3 J-Flash 烧录工具的使用J-Link 配套的烧录工具是J-Flash。使用流程如下打开 J-Flash新建工程选择目标芯片型号 “STM32F103C8”。在 “Target Interface” 里选择 “SWD”速度可以先设低一点比如 1000kHz连接稳定后再提高。点击 “Target” → “Connect”连接成功后会在日志窗口显示芯片信息。打开要烧录的.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 模块的核心芯片常见的有CH340、CP2102、PL2303等。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 跳到 13.3VBOOT1 跳到 0GND。烧录完成后把 BOOT0 跳回 0重新上电。接线方面USB转TTL 模块与最小系统板的连接如下USB转TTL 引脚最小系统板引脚说明TXDPA10 (RX)发送接接收RXDPA9 (TX)接收接发送GNDGND共地3.3V3V3供电可选注意 TXD 和 RXD 是交叉连接的模块的发送接芯片的接收模块的接收接芯片的发送。很多人第一次接的时候直接 TXD 对 TXD结果当然连不上。5.3 使用 FlyMcu 或 STM32CubeProgrammer 烧录串口烧录工具常用的是FlyMcu国产软件界面简单专门用于 STM32 串口下载。使用流程打开 FlyMcu选择对应的 COM 口。波特率一般选 115200如果烧录失败可以降低到 57600 或 38400。选择要烧录的.hex文件。勾选 “编程后执行” 和 “校验”。点击 “开始编程”。如果一切正常你会看到进度条走完提示 “编程成功”。然后拔掉 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元烧录速度20KB2-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 是否跳到 1BOOT1 是否跳到 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 跳线、接线、驱动这三件事搞清楚基本上就不会再被烧录问题卡住了。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑