1. 串口烧录前的硬件准备
第一次接触STM32串口烧录时,我踩过不少坑。最让人头疼的就是硬件连接问题,看似简单的几根线,稍有不慎就会导致烧录失败。USB转TTL工具是必备的硬件,常见的有CH340和CP2102两种芯片方案。实测下来CH340的兼容性更好,但驱动安装经常出问题。建议在设备管理器中确认串口号是否正常显示,如果出现黄色感叹号,需要手动安装驱动。
BOOT引脚设置是新手最容易忽略的关键点。STM32的启动模式由BOOT0和BOOT1引脚决定:
- BOOT0=1, BOOT1=0:进入系统存储器启动模式(串口下载模式)
- BOOT0=0, BOOT1=0:正常从主闪存启动
接线时要特别注意交叉连接原则:USB转TTL的TX接单片机RX(PA10),RX接单片机TX(PA9)。我就犯过直接TX-TX、RX-RX连接的错,结果死活连不上。电源建议使用3.3V供电,虽然有些USB转TTL支持5V输出,但可能损坏STM32芯片。
2. FlyMcu工具配置详解
FlyMcu是我最常用的串口烧录工具,但它的参数设置有很多门道。打开软件后首先要检查串口号是否与设备管理器一致,波特率建议先用默认的115200。遇到过波特率设置过高导致通信失败的情况,这时可以尝试降低到57600或38400。
关键设置项在界面右下角:
- 编程后执行:勾选后下载完自动运行程序
- DTR/RTS设置:必须选择"DTR低电平复位,RTS高电平进BootLoader"
- 校验:建议勾选以验证烧录结果
有个隐藏技巧:当连接不稳定时,可以勾选"编程前重装文件"。有次烧录失败后,我发现是因为HEX文件被其他程序占用,这个选项能强制重新加载。如果频繁出现连接超时,可以调整"尝试次数"参数,最高设到10次。
3. 常见错误排查指南
3.1 驱动安装失败
CH340驱动安装失败时,可以尝试以下步骤:
- 拔掉USB设备
- 使用驱动精灵等工具彻底卸载旧驱动
- 从官网下载最新驱动
- 右键.inf文件选择"安装"
- 重新插拔设备
3.2 连接超时问题
遇到"Connecting..."卡住的情况,建议按这个顺序排查:
- 检查BOOT引脚设置(必须1和0)
- 确认TX/RX线序是否正确交叉
- 尝试按下复位键再点击烧录
- 更换USB接口或数据线
- 检查焊点是否虚焊(我就遇到过排针接触不良的情况)
3.3 HEX文件无效
如果提示"Invalid hex file",可能是:
- Keil未正确生成HEX文件(需在Options for Target→Output中勾选Create HEX File)
- 文件路径包含中文或特殊字符
- HEX文件被损坏(可以用文本编辑器打开检查)
4. 高级技巧与替代方案
当标准方法都失效时,可以尝试这些方案:
- 使用STM32CubeProgrammer:官方工具支持更多烧录方式
- Python自动化烧录:通过pySerial库可以编写自动烧录脚本
import serial import time ser = serial.Serial('COM3', 115200, timeout=1) with open('firmware.hex', 'r') as f: for line in f: ser.write(line.encode()) time.sleep(0.1) ser.close()- 硬件复位电路:在BOOT0引脚添加按键开关,方便切换模式
有个实用小技巧:在Keil的User选项卡中添加如下命令,编译后自动调用FlyMcu烧录:
D:\Tools\FlyMcu.exe ".\Objects\project.hex" /hex /port=COM3 /baud=115200 /stab=1 /dtr=0 /rts=1 /echo=1焊接质量直接影响烧录稳定性。建议用万用表通断档检查所有连接点,特别是排针和杜邦线。遇到过杜邦线内部断线的情况,表面看不出来但就是不通。对于长期使用的开发板,最好直接把USB转TTL模块焊接到板子上。