F103刷机怎么操作,F103刷机详细步骤?
F103刷机并不复杂,核心就三步:选对下载工具、拨对启动引脚、点一下下载按钮,绝大多数刷机失败都出在驱动和Boot0设置上,而不是芯片本身。
STM32F103刷机前必须弄明白的事
先确认你的F103是什么型号和板子
STM32F103是个大家族,C8T6、CBT6、RCT6、ZET6都是常见型号,它们的Flash容量不同,刷机方式却大同小异,最常见的板子是STM32F103C8T6蓝色开发板,这块板子自带ST-Link下载口,插上USB线就能刷,几乎不需要额外接线。
F103刷机方向有两条:一是给芯片写固件(比如烧录Keil编译出的hex文件),二是刷Bootloader(比如用串口ISP方式更新程序),两者操作路径不同,但底层逻辑一致——都是通过特定接口把二进制数据写入Flash。
搞清楚Boot0和Boot1引脚的逻辑
这是F103刷机最容易翻车的地方,说三遍都不嫌多,F103的启动方式由BOOT0和BOOT1引脚的电平决定:
- BOOT0=0,BOOT1任意:从主Flash启动,正常跑用户程序
- BOOT0=1,BOOT1=0:从系统存储器启动,进入串口ISP下载模式
- BOOT0=1,BOOT1=1:从SRAM启动,常用于调试
蓝色开发板上有一个跳线帽控制BOOT0,刷机时把跳线帽接到"1"的位置,下载完成后务必把跳线帽接回"0",否则程序不会从Flash启动,很多朋友刷完板子没反应,八成是跳线帽忘拨回去了。
STM32F103刷机用什么软件
主流下载工具横向对比
| 工具 | 连接方式 | 是否需外接电路 | 上手难度 | 适用场景 |
|---|---|---|---|---|
| ST-Link(SWD) | 4根线,SWDIO+SWCLK | 不需要 | 最低 | 日常开发、调试 |
| J-Link | 同SWD,但兼容更多芯片 | 不需要 | 低 | 多芯片开发 |
| 串口ISP(UART) | 3根线,TX+RX+GND | 需要BOOT0拉高 | 中等 | 批量生产、无调试器时 |
| USB DFU | 通过USB口直连 | 需要BOOT0拉高 | 中等 | 固件升级场景 |
我的建议很简单:手里有ST-Link就用ST-Link,没有就花二十块钱买一个,省心省事。 串口ISP虽然免费,但需要额外接USB转TTL模块,还要手动拉高BOOT0,操作步骤多,对新手不太友好。
刷机软件配置实操
以最常见的方式举例:
用STM32CubeProgrammer(ST官方工具)通过ST-Link刷机
- 从ST官网下载STM32CubeProgrammer,安装后打开
- 把ST-Link的SWD接口用杜邦线连到板子(SWDIO→PA13,SWCLK→PA14,GND→GND,3.3V→3.3V)
- 软件右侧选择"ST-LINK"选项卡,点击"Connect"
- 连接成功后会显示芯片型号和Flash大小
- 点击"Open file"选择你的
.hex或.bin文件 - "Download"按钮点亮后点击,进度条跑完即刷机成功
- 断电复位,程序开始运行
遇到"No ST-LINK detected"怎么办:先检查ST-Link的驱动是否安装,用Zadig或ST官方驱动工具重装一遍;再检查杜邦线是否松动,SWDIO和SWCLK有没有接反,两种排查覆盖了绝大多数连接失败场景。
F103刷固件失败怎么解决
最常翻车的几个环节
驱动问题占刷机失败原因的相当大比例。 尤其是那种十几块钱的淘宝ST-Link山寨版,在Windows 10以上系统里经常被识别成未知设备,解决办法是禁用Windows强制驱动签名,再用ST官方驱动包手动指定驱动路径。
接线过长导致的通信失败也极为常见。 SWD接口对杜邦线长度比较敏感,超过20厘米就可能在高速模式下出错,这时把STM32CubeProgrammer里的SWD频率从4MHz降为1MHz,问题通常就消失了。
芯片锁死(读保护)会让下载工具提示"Error"或"Flash timeout"。 这情况通常发生在编程选项字节时勾了读保护,或者在调试时设置了RDP级别,解决方法是:先用ST-Link Utility或STM32CubeProgrammer的"Full chip erase"功能做全片擦除,注意这会清掉Flash里所有数据,包括Option Bytes,擦除后重新连接,再刷固件即可。
刷机成功的验证方法
程序跑没跑起来,别只看下载进度条。最直接可靠的验证方式是看板载LED是否按预期闪烁。 如果LED不亮,先查供电——万用表量一下3.3V和GND之间电压是否稳定;再查芯片是否处于复位状态——NRST引脚被拉低会导致芯片一直复位,程序永远跑不起来。
想确认固件确实写进去了,可以在Keil的Debug设置里勾选Verify,下载后自动校验Flash内容,数据不一致会直接报错,不会留着隐患过夜。
串口下载还是ST-Link:F103刷机工具怎么选
两种方式本质区别
串口ISP走的是UART,硬件上需要一个USB转TTL工具,软件上对应的是FlyMcu或STM32CubeProgrammer的UART模式。 操作时把BOOT0跳线帽接到1,板子断电再上电,此时芯片不跑用户程序,而是进入出厂固化的Bootloader,通过串口接收数据写入Flash。
ST-Link走的是SWD协议,属于调试接口,不需要切换BOOT0引脚,直接连接即可边调试边下载。 速度上SWD在保证稳定性的前提下远超串口ISP——串口ISP最常见的波特率是115200,刷一个64KB的固件需要五六秒,而ST-Link只需要一秒左右。
我的选型建议
- 打样调试阶段:无脑选ST-Link,Keil里直接点Download,报错信息直指问题根源,节省大量排查时间
- 小批量生产场景:用串口ISP反而更划算,因为STM32F103的系统Bootloader是出厂固化的,不需要额外买调试器,一块USB转TTL模块三四块钱就能搞定
- 现场升级维护:推荐用USB DFU方式,只要设备带USB口且预留了BOOT0控制,一根数据线就能完成固件更新,不需要拆机接线
F103刷机工具价格参考
在电子市场或线上购物平台,ST-Link V2的仿制版价格在15到35元之间,ST原装版在80到120元,USB转TTL模块(CH340芯片)通常不到10元,J-Link V9仿真器仿制版价格在30到50元,如果你的工作环境需要同时调试STM32、NXP、GD32等多种芯片,J-Link的兼容性更好,性价比反而更高。
线下电子市场(比如深圳华强北、北京中发电子城)的价格通常比线上贵10到20元,但胜在能当场验货,看准再掏钱,购买ST-Link时尽量选带固件升级功能的版本,避免买到老固件无法识别新芯片。
常见问题速查
STM32F103刷机后程序不运行怎么办
先查BOOT0跳线帽是否在"0"位置,这是最常见原因,再检查供电是否稳定——用万用表量VDD对GND电压是否在3.0V以上,最后用ST-Link连接芯片,在STM32CubeProgrammer里读一下Flash起始地址的数据,确认有没有内容覆盖,如果Flash是空的,说明下载过程并没有真正写进去,重新走一遍刷机流程,注意观察下载日志有没有报错。
F103可以用手机数据线刷机吗
分情况,如果板子上有USB转串口芯片(如CH340),那么数据线是供电和通信的桥梁,前提是安装好CH340驱动和刷机软件,如果板子上只引出了USB的D+和D-到PA11和PA12,且MCU里预烧了DFU Bootloader,那么数据线可以直接连电脑,用DFU模式刷机,但绝大多数F103开发板出厂时没有预烧DFU固件,也未必有完整的USB接口电路,非极客玩家直接用数据线刷机反而容易绕晕。
F103刷机变砖了能救回来吗
能,STM32F103几乎没有真正意义的"变砖"——只要BOOT0能拉高,系统存储器里的Bootloader就无法被擦除,芯片就永远保留一条串口ISP的救砖通道,将BOOT0接高电平,用USB转TTL的交叉连接方式接好串口,上电后通过FlyMcu或STM32CubeProgrammer重新写入固件即可恢复,不需要拆芯片,也不用编程器。

