STM32F103C8T6串口烧录实战告别ST-LINK用Flymcu与CH340轻松搞定手头刚拿到一块STM32F103C8T6最小系统板却发现商家没配ST-LINK下载器是不是瞬间觉得开发流程卡住了别急这其实是个挺常见的场景。很多入门套件为了控制成本或者在一些特定的小批量项目中我们手边可能就只有一块核心板加一个USB转串口模块。这时候串口烧录就成了最直接、最经济的解决方案。我刚开始接触STM32时也遇到过同样的情况当时第一反应是“非得买个下载器吗”后来摸索发现利用芯片内置的Bootloader配合串口工具完全能实现程序的烧写。这种方式不仅成本低而且在一些现场调试、生产烧录等场景下反而更灵活。今天我们就来彻底搞懂如何用Flymcu这款软件配合常见的CH340 USB转串口模块完成对STM32F103C8T6的程序烧录。整个过程会涉及软件配置、硬件连接、BOOT引脚设置以及一系列实操中容易踩的坑我会结合自己的经验把每一步都讲透。1. 准备工作硬件连接与软件环境搭建在开始烧录之前我们需要确保硬件和软件都准备到位。硬件方面核心是STM32F103C8T6最小系统板和USB转串口模块以CH340为例。软件则需要Keil MDK或其他ARM开发环境用于编译生成HEX文件以及Flymcu用于串口烧录。1.1 硬件接线详解STM32F103C8T6的串口1USART1的引脚是PA9TX和PA10RX。CH340模块上通常标有TXD和RXD。这里有一个关键点STM32的TX要接CH340的RXSTM32的RX要接CH340的TX。接反了通信就无法建立。注意很多新手在这里容易搞混。记住一个原则数据发送端TX应该连接数据接收端RX。所以来自STM32的发送信号PA9/TX要去往CH340的接收端RXD。除了串口线还需要连接电源线和地线。CH340模块一般会提供VCC5V或3.3V和GND引脚。对于STM32F103C8T6最小板建议使用3.3V供电以避免电压不匹配的风险。如果CH340只提供5V输出则需要确认你的最小板是否有5V转3.3V的LDO稳压芯片或者考虑从其他途径如USB口为板子提供3.3V电源。一个完整的接线表示例如下STM32F103C8T6 引脚CH340 模块引脚说明3V3 (或VCC)3V3 (或VCC)电源正极务必确认电压匹配GNDGND电源地共地是通信的基础PA9 (USART1_TX)RXDSTM32发送CH340接收PA10 (USART1_RX)TXDSTM32接收CH340发送接好线后将CH340模块插入电脑USB口。在Windows设备管理器中应该能看到一个新的COM口出现例如COM3、COM4。记下这个端口号后续在Flymcu中会用到。1.2 软件获取与准备首先确保你的工程在Keil MDK中能正常编译。编译的目标是生成一个.hex文件这是Flymcu将要烧录的文件。在Keil中打开“Options for Target”对话框点击魔术棒图标转到“Output”选项卡勾选“Create HEX File”。然后编译整个工程在工程目录下的Objects文件夹里就能找到生成的.hex文件。接下来是Flymcu。这是一款国产的免费STM32串口下载软件界面简单功能专注。你可以从其官网或一些开源硬件社区找到它。下载后无需安装直接运行exe文件即可。它的主界面主要包含串口选择、波特率设置、HEX文件加载区域以及操作按钮。2. 理解核心STM32的BOOT模式与内置Bootloader为什么STM32可以通过串口烧录程序这完全依赖于芯片内部固化好的一段特殊程序——系统存储器Bootloader。它不是我们用户写的程序而是芯片出厂时就预置在系统存储区System Memory的一段ROM代码。它的作用就是在特定条件下接管芯片允许通过串口、USB等接口接收新的应用程序数据并将其写入到用户闪存Flash中。而要进入这个Bootloader模式就需要通过BOOT0和BOOT1这两个引脚的电平状态来配置芯片的启动方式。这是整个串口下载流程中最关键、也最容易出错的一环。2.1 BOOT0与BOOT1引脚功能解析STM32F103C8T6的BOOT0和BOOT1引脚状态决定了芯片复位后从哪个存储区域开始执行代码。主要有三种启动模式主闪存存储器Main Flash memory这是最常用的模式。芯片执行我们烧录在Flash里的用户应用程序。设置方式BOOT00。系统存储器System memory芯片执行内部Bootloader程序。串口下载就必须设置成这个模式。设置方式BOOT01 BOOT10。内置SRAMEmbedded SRAM芯片从SRAM启动用于调试。设置方式BOOT01 BOOT11。对于串口下载我们只需要关注前两种。简单来说想运行程序时让芯片从主闪存启动BOOT00。想烧录程序时让芯片从系统存储器启动BOOT01, BOOT10。在最小系统板上通常会用跳线帽来连接这两个引脚到高电平VCC/3.3V或低电平GND。你需要查看你的板子原理图或实物找到标有BOOT0和BOOT1的排针。2.2 实操如何设置BOOT引脚假设你的板子上BOOT0和BOOT1引脚都有跳线帽排针旁边标有“3V3”和“GND”的焊盘或排针。进入下载模式使用跳线帽将BOOT0引脚连接到3.3V高电平将BOOT1引脚连接到GND低电平。这样就配置成了“系统存储器”启动模式。给板子上电或复位在设置好跳线帽后给板子通电或者按一下复位键RESET。这个复位操作至关重要芯片只在复位时刻采样BOOT引脚的电平。如果设置好BOOT后不复位芯片仍然会按照之前的模式运行。开始烧录此时芯片已经运行在Bootloader中等待通过串口接收指令和数据。你可以在Flymcu中操作烧录。返回运行模式程序烧录完成后必须先给板子断电然后将BOOT0的跳线帽改接到GND低电平。BOOT1保持接GND即可。再次上电或按复位键芯片就会从主闪存启动运行你刚刚烧录进去的新程序。提示很多朋友烧录失败问题就出在“设置BOOT后忘了复位”或者“烧录后忘了把BOOT0改回去”。请务必养成“设置-复位-操作-还原-复位”的操作习惯。3. Flymcu软件配置与烧录流程详解硬件连接和BOOT模式都准备好后就可以打开Flymcu进行烧录了。这个软件的界面虽然朴素但每个选项都有其作用。3.1 关键配置项说明打开Flymcu你会看到如下主要区域我们需要进行正确配置串口选择下拉菜单选择你在设备管理器中看到的CH340对应的COM口。波特率一般选择115200即可。Bootloader支持多种波特率115200是兼容性和速度的较好平衡点。如果连接不稳定可以尝试降低到9600或57600。编程文件点击“...”按钮选择你在Keil中生成的.hex文件。选项字节这里有几个重要的复选框编程前重装文件如果勾选每次点击“开始编程”都会重新读取一次HEX文件。建议勾选确保烧录的是最新文件。编程后执行勾选后烧录完成会自动复位并运行程序。非常建议勾选这样烧录完就能看到效果无需手动复位。校验勾选后烧录完会读取Flash内容与HEX文件对比确保数据正确。建议勾选增加可靠性。DTR的低电平复位RTS高电平进BootLoader这是实现“一键下载”功能的关键。如果你的USB转串口模块支持DTR和RTS信号并且你的最小板电路按照某种方式通常需要额外电路连接了这两个信号到MCU的复位和BOOT0那么勾选此选项后Flymcu可以自动控制复位和进入Bootloader的时序你就不需要手动去拔插BOOT0跳线帽了。但对于最简单的三线连接VCC, GND, TX, RX这个选项通常无效我们依赖手动设置BOOT。3.2 完整烧录操作步骤让我们一步步走完整个流程硬件准备按照第一部分所述连接好STM32板子与CH340模块的电源、地、TX、RX共四根线。设置BOOT模式将BOOT0跳线帽接3.3VBOOT1接GND。上电与复位给板子上电并按下复位键如果板上有。打开Flymcu并配置选择正确的COM口和115200波特率。加载你的.hex文件。勾选“编程前重装文件”、“编程后执行”、“校验”。“DTR的低电平复位...”选项根据你的硬件决定是否勾选初学或不明确时先不勾选。测试连接点击软件上的“读器件信息”按钮。如果一切正常右侧信息框会显示“芯片擦除成功”或类似的连接成功信息并能读到芯片的ID等内容。这一步是诊断连接是否成功的关键。如果失败请跳到第四部分排查问题。开始编程点击“开始编程(P)”按钮。下方进度条会开始走动信息框会显示擦除、编程、校验等步骤的日志。等待完成当信息框显示“编程成功”或“校验成功”进度条走完即表示烧录完成。恢复BOOT模式并运行给板子断电。将BOOT0跳线帽从3.3V改接到GND。重新上电。此时你刚烧录的程序就应该开始运行了比如LED开始闪烁。# 这是一个理想化的流程总结你可以保存在笔记里 1. 接线 (VCC, GND, TX-RX, RX-TX) 2. BOOT0置1 (接3V3) BOOT1置0 (接GND) 3. 上电按复位 4. Flymcu: 选端口加载hex点“读器件信息”测试 5. 测试成功点“开始编程” 6. 烧录完成断电 7. BOOT0置0 (接GND) 8. 重新上电程序运行4. 常见问题排查与深度优化技巧即使按照步骤操作也可能会遇到各种问题。这里我总结了一些常见的“坑”和解决办法。4.1 连接与通信失败症状Flymcu点击“读器件信息”或“开始编程”无反应或提示“连接失败”、“超时”。排查思路COM口是否正确确认设备管理器中CH340对应的COM口号是否被其他软件如串口助手占用。接线是否正确再次检查TX-RX是否交叉连接电源和地是否接好。可以用万用表测量STM32的VCC是否有3.3V。BOOT设置与复位这是最常见的原因。确认BOOT0是否确实接到了高电平用万用表测电压并且在设置后进行了复位操作。芯片只在复位瞬间采样BOOT引脚。CH340驱动虽然输入信息说默认安装过但有时驱动可能有问题。尝试重新拔插USB线或在设备管理器中卸载后重新安装驱动。波特率尝试将Flymcu中的波特率改为9600或57600。高波特率在劣质USB线或长距离下可能不稳定。芯片是否损坏极少数情况可能是芯片的串口或Bootloader区域损坏。4.2 编程过程出错症状能读到器件信息但编程中途失败提示“擦除失败”、“编程失败”或校验错误。排查思路供电不足CH340模块的3.3V输出电流可能有限通常100-200mA当STM32板子功耗较大比如驱动了多个外设时可能导致编程过程中电压跌落通信出错。尝试给STM32板子单独供电如通过另一个USB口CH340模块只连接TX、RX、GND三根线。代码量过大检查生成的HEX文件大小是否超过了STM32F103C8T6的64KB Flash容量。选项字节冲突某些情况下Flash的读写保护被开启会导致编程失败。Flymcu通常会在编程前尝试解除保护但如果失败可能需要使用ST-LINK等工具先全片擦除并解除保护。4.3 进阶实现“一键下载”手动切换BOOT0跳线帽非常麻烦。我们可以通过简单的电路利用CH340的DTR和RTS信号让Flymcu自动控制复位和BOOT0实现真正的“一键下载”。其原理是Flymcu在开始通信前通过DTR和RTS发出特定时序的电平信号。这些信号通过一个由三极管或MOS管构成的小电路转换成对MCUNRST复位引脚和BOOT0引脚的控制。具体来说电路会让MCU先复位并在复位期间将BOOT0拉高使其进入Bootloader模式然后开始通信烧录烧录完成后再控制BOOT0恢复低电平并再次复位使其运行用户程序。你可以在网上搜索“STM32一键下载电路”找到典型的原理图通常涉及一个NMOS管和几个电阻。很多现成的STM32核心板或开发板已经集成了这个电路。如果你的板子有这个电路那么在Flymcu中勾选“DTR的低电平复位RTS高电平进BootLoader”选项后你只需要在Flymcu里点击开始剩下的所有BOOT切换和复位操作都会自动完成体验和用ST-LINK一样流畅。最后关于Flymcu软件本身它虽然小巧易用但毕竟是个人开发的工具。在极其追求稳定性的工业生产环境下可能会考虑使用ST官方提供的STM32CubeProgrammer软件它也支持通过UART进行烧录并且功能更强大支持更多芯片型号和接口。但对于STM32F103C8T6的学习和大多数项目开发而言Flymcu已经是一个非常可靠和便捷的选择了。