STM32H753ZI UART烧录失败排查:Bootloader与接线全解析 📅 发布时间:2026/8/30 14:29:11 👁 浏览次数: 做嵌入式这些年用 UART 给 STM32 烧录程序算是门槛最低、用的人最多的方案之一但恰恰是这条基础链路几乎每个人都在某个项目里翻过车。看到 Problem while flashing code via uart in programmer in stm H753ZI 这个标题我第一反应就是又是老一套但又不完全是老一套。STM32H753ZI 这颗片子的 UART Bootloader 和 F1/F4 那代不太一样启动引脚逻辑、选项字节、串口映射都有坑再加上 USB-UART 适配器驱动、接线顺序、软件参数任何一个环节掉链子最后的表现都是烧不进去。这篇文章我不打算讲空泛的理论而是把 UART 烧录这条链路彻底拆开从 PC 端软件怎么把数据送出去到串口适配器怎么转发再到芯片里的 ROM Bootloader 怎么接收和写 Flash每一步可能出什么问题、怎么排查最后给出一套我自己实测过很多次的排障流程。无论你是第一次用 UART 给 H7 烧录还是已经在 CubeProgrammer 上报错报得怀疑人生这篇内容都能帮你快速定位问题。1. 一次UART烧录失败的完整链路拆解1.1 从 PC 到芯片数据到底走了哪几步很多人一遇到 UART 烧录失败第一反应就是怀疑芯片坏了或者直接重装软件折腾半天发现没用。其实问题往往不在你最先想到的那个环节。要有效排查你得先搞清楚一次 UART 烧录数据到底经过了哪些环节第一环是 PC 端软件也就是 STM32CubeProgrammer也可以叫它 programmer。软件负责把固件文件读进来按照 STM32 的 Bootloader 协议打包成命令帧然后通过虚拟串口发出去。第二环是 USB-UART 适配器也就是我们常说的 USB 转 TTL 小板。这块小板上有一颗桥接芯片常见的有 FT232R、FT231X、CP2102 等等。它把 PC 端的 USB 数据流转换成 UART 电平信号从 TX 引脚发出去同时从 RX 引脚接收 MCU 回来的数据。这一环的关键是驱动驱动没装好系统里根本看不到串口号。第三环是物理接线。适配器的 TX 必须接到 MCU 的 RX适配器的 RX 必须接到 MCU 的 TX地线必须共地。任何一根线接错数据就到了不了正确的地方。这一环还有个隐蔽问题电平不匹配适配器输出 5V 而 MCU 的 UART 引脚是 3.3V 容忍长期使用可能会出问题。第四环是目标芯片 STM32H753ZI 本身。芯片上电复位后由 BOOT0 引脚和选项字节决定从哪里启动。如果要走 UART 烧录必须让芯片进入系统存储器System Memory里的 ROM Bootloader这个 Bootloader 会占用一组固定的 UART 引脚以固定的通信格式等待接收命令。最后一环才是 Flash 写入。Bootloader 收到擦除和写内存的命令后对片内 Flash 进行操作。如果芯片设置了读保护RDP或者选项字节被改得乱七八糟这一环也会失败。这五环里任何一环断了你看到的都是烧录失败。所以排查的时候不要盯着一个点猛找而是按这条链路从上到下、从软到硬逐层确认。1.2 先判断问题属于哪一层我的经验是接到任何 UART 烧录报错先别急着改接线先做一次分层定位。第一步看软件报错内容。STM32CubeProgrammer 的报错大致分三类连接阶段报 No STM32 target found 或者 Port not found读芯片阶段报 Error: Connection error 或者 Target reset error操作阶段报 Write error 或者 Protected。连接阶段的问题大概率在驱动、串口选择和接线读芯片阶段的问题大概率在 BOOT 引脚、选项字节和通信参数操作阶段的问题大概率在芯片保护状态。第二步做回环测试。把适配器的 TX 和 RX 直接短接在 PC 上用串口助手发什么收什么就能确认适配器和驱动是好的。如果回环都不过问题在适配器或驱动和芯片没关系。第三步测芯片侧。确认芯片供电正常NRST 引脚复位电平正常BOOT0 引脚电压确实拉高了然后用示波器或逻辑分析仪看 MCU 的 RX 脚上有没有波形。如果有波形但 MCU 不回应再查 UART 引脚是否选对、通信格式是否匹配。这套流程走下来80% 的问题都能在十分钟内找到定位。下面我把每一层容易出问题的地方分别展开讲尤其是 STM32H753ZI 特有的一些坑。2. STM32H753ZI 的启动模式与 UART Bootloader 原理2.1 BOOT0 引脚进入系统 Bootloader 的唯一钥匙STM32H753ZI 上电后跑哪段代码是由 BOOT0 引脚配合选项字节Option Bytes里的 nBOOT0、nBOOT1 共同决定的。对绝大多数用户来说最朴素的操作就是把 BOOT0 拉高到 3.3V复位芯片芯片就会从 System Memory 启动进入内置 Bootloader。但是 H7 这代芯片有个很容易踩的坑BOOT0 引脚并不是唯一决定因素。如果你之前用 ST-LINK 或者其他工具改过选项字节把 nBOOT0 配成了 0那么 BOOT0 引脚就会被忽略此时拉高 BOOT0 根本没用芯片依然从主 Flash 启动。很多人的板子之前调试过、烧过程序选项字节已经不是出厂状态UART 烧录自然就连不上。另外还有一个小细节改完 BOOT0 之后必须复位芯片而且是重新上电或者拉低 NRST 引脚的那种硬件复位不是软件复位。如果只是把 BOOT0 拉高但没复位芯片仍然跑在原来的程序里。还有一个很容易忽略的点BOOT0 引脚不能悬空。有些自制板子没接 BOOT0 的上拉或下拉电阻导致引脚电平漂浮不定上电后到底从哪启动完全看运气。处理方法是接一个 10kΩ 左右的下拉电阻保证默认从 Flash 启动需要烧录时再通过跳线或按键拉高。2.2 Bootloader 用哪组 UART、什么通信格式STM32H753ZI 的 ROM Bootloader 并不是随便哪组串口都能用。H7 系列的系统 Bootloader 支持的串口和引脚是固定的官方在应用笔记 AN2606 里有完整表格。以 H753 为例最常用的是 USART1 的 PA9TX/PA10RX以及 USART3 的 PB10TX/PB11RX还有 USART2 等其他选项。这就带来一个实际问题很多人把 USB-UART 适配器接到了芯片上任意一组串口比如 USART6然后发现 CubeProgrammer 怎么都连不上。原因很简单ROM Bootloader 只认固定那几组引脚你接的那组它根本没初始化。所以第一步就是查你对应用手册确认你接的确实是 Bootloader 映射的那组串口。通信格式方面ST 的 UART Bootloader 使用 8 位数据位、偶校验Even Parity、1 位停止位也就是常说的 8E1。同时支持自动波特率检测也就是芯片会根据收到的同步字节自动判断波特率。CubeProgrammer 默认走的就是这套协议协议本身不需要你手动构造但你要知道如果哪一天你图方便用串口助手直接给 Bootloader 发命令必须自己把格式设成 8E1否则芯片根本不认。连接建立的过程是这样的CubeProgrammer 打开串口后会发送一个同步字节 0x7FBootloader 收到后如果认为波特率正确、格式正确就会回复 0x79ACK表示握手成功。如果芯片没进 Bootloader、接线不对、或者格式不对你就永远等不到这个 0x79最终表现为超时。2.3 上电顺序与复位时序UART 烧录还有一个很多人不知道的时序要求必须让芯片在处于 Bootloader 模式下复位并在规定时间内完成连接。正确流程是先把 BOOT0 拉高然后给芯片复位重新上电或按复位键芯片在第一个机器周期采样 BOOT0 引脚电平决定启动位置。如果你先让芯片跑起来了再拉 BOOT0那就晚了芯片不会中途切到 Bootloader。另外H7 的 Bootloader 内部有超时机制如果长时间收不到有效命令芯片可能一直停在等待状态或者干脆没反应。我实际遇到的情况是改完接线、设置好参数之后千万不要在软件界面里磨蹭半天才点 Connect。正确做法是先把 CubeProgrammer 的参数全配好、串口选好然后给芯片复位紧接着立刻点 Connect。还有一点如果芯片内部已经在跑一个主频很高的程序而这个程序把 UART 引脚复用成了别的功能情况会有点复杂。因为 ROM Bootloader 是在芯片复位后、用户程序运行前启动的只要 BOOT0 拉高并复位用户程序根本不会执行所以这个问题理论上不会影响 Bootloader。但如果你的芯片里 RDP 保护等级被设成了 Level 2那 Bootloader 会被永久禁用UART 烧录这条路就彻底断了只能换一块芯片。这个坑比较狠后面我单独讲。3. 硬件排查八成问题出在这些细节上3.1 USB-UART 适配器选型与驱动我排查过很多 UART 烧录问题其中一大部分根因其实在 USB-UART 适配器这一层。市面上最流行的几颗桥接芯片是 FT232R、FT231X 和 CP2102它们都挺好用但都有一个共同问题在 Windows 下必须装对应驱动否则系统里不出现 COM 口或者其他设备里挂着一个带黄色感叹号的设备。FT232R 和 FT231X 都是 FTDI 家的驱动要去官网下载叫作 Virtual COM Port (VCP) Driver。注意FT232R 这颗芯片假货特别多有些所谓的CH340 兼容板刷了 FTDI 的 VID/PID或者直接用打磨过的芯片装上正版驱动后会出现 USB Serial Converter 无法启动的情况设备管理器里显示错误代码 10。如果你手里的板子是那种特别便宜的蓝色小模块焊接粗糙、芯片丝印模糊就要高度怀疑是假芯片。CP2102 是 Silicon Labs 家的驱动叫 CP210x Universal Windows Driver装好后设备管理器里会出现 Silicon Labs CP210x USB to UART Bridge。这颗芯片假货相对少算是比较省心的选择。我个人建议如果只是偶尔给 STM32 烧录优先选 CP2102 或者靠谱渠道的 FT231X 模块少踩不少驱动坑。驱动装完怎么确认打开设备管理器展开端口COM 和 LPT这一项能看到 USB Serial Port (COMx) 或者 Silicon Labs CP210x USB to UART Bridge (COMx)。注意如果显示在其他设备里说明驱动没装上如果显示的是USB 串行设备但没有具体 COM 口号说明枚举有问题重新插拔或者换 USB 线试试。很多时候 USB 线也有讲究有些线只供电不通信这个问题能让人排查半天。3.2 TX/RX 交叉、共地一个都不能少接线问题是 UART 烧录失败里最冤枉的一种因为它低级到让人不好意思承认但它确实每天大量发生。原则只有一条适配器的 TX 接 MCU 的 RX适配器的 RX 接 MCU 的 TX。为什么因为 UART 是异步串行通信发送端必须把数据送到接收端。适配器从 TX 发数据如果不接到 MCU 的 RXMCU 根本收不到MCU 从自己的 TX 回数据如果不接到适配器的 RXPC 端就收不到。我在实际项目里见过各种奇葩接法TX 对 TX 的、只接 TX 不接 RX 的、RX 悬空的还有最经典的——拿一根杜邦线把适配器 TX 接到 MCU 的 PA9USART1_TX上。这种接法从原理上就是错的因为两个发送脚对在一起谁发给谁所以接线的第一步是拿起原理图或者数据手册确认 MCU 那组 UART 的 TX 和 RX 引脚编号然后和适配器的 TX/RX 交叉连接。共地这一点同样重要。UART 信号是相对于地线的电平如果适配器地和芯片地没有连在一起两边的地电位不一致信号电平完全错乱表现就是时好时坏、偶尔能连上偶尔连不上。尤其是用笔记本供电、又用另外一个电源给板子供电的时候两个电源的地不共就会出现这种情况。记住任何时候GND 必须 GND 对 GND。3.3 BOOT0 的接法与电平前面讲了 BOOT0 必须拉高才能进 Bootloader但拉高本身也有细节。首先电平必须是 3.3V 而不是 5V。虽然 STM32H753ZI 的很多引脚是 5V 容忍的但 BOOT0 这类特殊引脚不一定稳妥起见直接接 3.3V 就好。我见过有人在 Nucleo 板上把 BOOT0 跳线跳到 5V结果烧录时芯片行为异常查了半天才发现是电平问题。其次拉高尽量用电阻不要直接拿一根线跳到 3.3V。虽然直接接也可以用但一旦你忘记把 BOOT0 跳回低电平芯片每次上电都进 Bootloader用户程序永远跑不起来看起来就像程序烧录成功但一上电就死机。用跳线帽或者拨码开关来切换是最可控的方式。另外要注意有些开发板的 BOOT0 不是靠跳线而是靠锡桥Solder Bridge配置的比如 NUCLEO-H753ZI 这类板子默认状态可能没有把锡桥连上。你以为自己在控制 BOOT0实际上引脚是悬空的这在排查时特别容易漏掉。3.4 电平匹配3.3V 与 5V 的坑USB-UART 适配器的输出电平取决于桥接芯片的 VCCIO 引脚。很多适配器默认工作在 5V比如一些老款 FT232R 模块输出高电平是 5V。STM32H753ZI 的 UART 引脚能不能容忍 5V部分引脚标注了 FT5V 容忍但不是全部而且即便标注了 5V 容忍也不建议长期把 5V 电平灌进去尤其是电源域复杂的高性能芯片。如果适配器支持跳线切换 3.3V/5V务必切到 3.3V 挡位。如果适配器是固定 5V 的可以串一个电阻分压或者干脆换一个支持 3.3V 的模块。这一条看着不起眼但电平不匹配导致的烧录失败轻则通信异常重则搞坏引脚我建议直接作为硬性规范来执行。另外VCCIO 电平还影响芯片识别。有些适配器虽然是 5V 供电但 VCCIO 引脚可以单独接 3.3V 来改变信号电平。这种模块把 VCCIO 接到目标的 3.3V 上是最干净的做法。如果你的模块上有 VCC 和 VCCIO 两个引脚别嫌麻烦分开接。4. 软件与工具排查CubeProgrammer 的隐藏细节4.1 串口驱动装不上 / 识别不到驱动问题在 Windows 上最常见。症状就是适配器插上后设备管理器里要么不出现 COM 口要么出现一个带感叹号的设备。这种情况的处理思路是先确认芯片型号再到对应原厂下载最新驱动不要用驱动精灵之类的第三方工具乱装。FTDI 的驱动安装之后如果设备管理器里显示 USB Serial Converter 正常、USB Serial Port (COMx) 也正常基本就没问题了。但如果出现错误代码 10 或者 Device Descriptor Request Failed大概率是假芯片或者损坏的板子。我踩过一次一批所谓原装 FT232RL模块装驱动后设备管理器偶尔能认到 COM 口拔插几次又消失最后换了两颗 CP2102 模块才稳定。CP2102 的驱动问题少一些但有个坑是老版本驱动对 64 位 Windows 支持不好。去 Silicon Labs 官网下最新的 CP210x Universal Windows Driver别用光盘里附带的古老版本。装完后如果系统里出现两个 COM 口一个真一个假比如适配器上同时接了其他串口设备在 CubeProgrammer 里选错就拿不到 0x79这个要注意。还有一个经常被忽略的操作插上适配器后拔了重插或者换个 USB 口。很多 USB 口供电能力不一样有些前置 USB 口纹波大、供电不足适配器工作不稳定表现就是串口能打开但通信经常超时。这时候换到机箱后面板或者带独立供电的 USB Hub问题可能就消失了。4.2 CubeProgrammer 的 UART 连接参数STM32CubeProgrammer 是目前给 STM32 烧录最主力的工具。通过 UART 连接时界面左侧选 UART右侧会出现串口设置区域。首先要选对端口下拉框里选择你适配器对应的 COM 口。其次波特率Bootloader 虽然支持自动波特率检测但为了稳定我建议直接固定 115200。有人喜欢把波特率拉到 921600 追求速度但前提是适配器和线材质量都过硬否则一根长杜邦线就能让高速传输变成灾难。第一次尝试时就用 115200成功率最高。然后是奇偶校验。CubeProgrammer 对 STM32 Bootloader 默认使用偶校验这个参数不要自己乱改成 None否则协议对不上连接必然失败。如果你在界面里看到 Parity 选项保持 Even 就行。流量控制Flow Control保持 None不要去勾 RTS/CTS很多 USB-UART 适配器并没有真正的硬件流控引脚。最后是操作顺序。配置好之后先把芯片复位到 Bootloader 模式然后立刻点 Connect。连接成功的标志是界面下方会显示芯片型号、UID、Flash 大小等信息比如 STM32H753ZI 以及对应的 PID。如果一直停在 Establish connection 或者报 No STM32 target found就按我前面说的链路逐层排查。4.3 别用错工具旧版 Flash Loader 与 STVP关于热词里出现的 programmer 9.5 下载 和 ST Visual Programmer 下载这里多说一句避免大家走弯路。ST 早年有个工具叫 Flash Loader Demonstrator负责通过串口给 STM32 下载程序但这个工具已经非常老了对 STM32H7 系列基本不支持。还有个 ST Visual ProgrammerSTVP主要是配合老的 ST-LINK 烧录器使用界面和逻辑都是上个时代的产物对 H753 的支持也很有限。现在 ST 官方推荐的统一工具就是 STM32CubeProgrammer它同时支持 ST-LINK、UART、USB DFU、SPI、I2C、CAN 等多种连接方式。如果你在网上搜到了什么版本号很老的 programmer先看清楚是不是 STM32CubeProgrammer 的某个版本而不是 Flash Loader Demonstrator。用错工具的表现是软件能打开、串口能看到但连不上芯片或者界面根本没有 H7 选项。这不是你操作有问题是工具本身就不该用。5. 一次完整的 UART 烧录排障实录5.1 故障现象与第一轮排查说一个我最近处理过的真实案例问题表现和标题描述几乎一样用户手里一块 STM32H753ZI 自制板用 USB-UART 适配器通过 UART 烧录STM32CubeProgrammer 报错 Error: Connection error: No STM32 target found。板子之前用 ST-LINK 烧过程序能跑所以芯片大概率没坏。第一轮排查我先让他做回环测试拔掉连接 MCU 的线把适配器的 TX 和 RX 用一根杜邦线短接打开串口助手发送数据。结果发现发送什么就收到什么说明适配器、驱动、驱动虚拟出的 COM 口都是好的。这下问题范围缩小到了 MCU 侧要么芯片没进 Bootloader要么接的 UART 引脚不对。然后我让他量 BOOT0 引脚电压结果发现是 0V。用户很惊讶说板子上明明有跳线把 BOOT0 接到了 3.3V。后来一查板子上的跳线帽插的位置不对中间的引脚和 3.3V 那根没导通等于 BOOT0 还是接地状态。这就是典型的你以为拉高了实际上没有。5.2 用示波器和串口助手进一步定位把 BOOT0 真正拉高、复位之后CubeProgrammer 还是连不上但这次的报错变成了超时。这就有意思了说明芯片可能已经进了 Bootloader但通信链路还有问题。我让他用示波器探头夹在 MCU 的 RX 引脚上点 Connect观察 RX 上有没有波形。结果波形是有的能明显看到 CubeProgrammer 发出来的数据帧。但是 MCU 的 TX 引脚上从头到尾没有回应。也就是芯片收到了东西但没有任何反应。这时候我开始怀疑两个方向一是 MCU 根本没进 BootloaderRX 上收到的数据只是灌进去但没人管二是 MCU 进了 Bootloader但用户接的串口引脚根本不是 Bootloader 映射的那一组。查原理图发现用户把适配器接到了 USART6 的 PC6/PC7 上。这个选择是他从之前某个项目直接复制过来的但 H753 的 ROM Bootloader 根本不支持 USART6至少不在默认映射表里。芯片确实没坏Bootloader 也确实在跑但它只监听自己那几组固定引脚PC6/PC7 上来的数据它根本不看。5.3 最终解决问题出在接线与 BOOT0 的双重失误最后把适配器的 TX/RX 从 PC6/PC7 挪到了 PA9/PA10USART1也就是 Bootloader 映射的串口重新复位芯片CubeProgrammer 一次就连接成功了顺利读出芯片 ID 和 Flash 大小然后完成擦除和烧录。这个案例里两个问题叠加BOOT0 没真正拉高是第一个原因即使拉高了串口引脚选错是第二个原因。这类问题在 H7 上特别典型因为 H7 的 UART 资源非常多用户习惯性选一组随手可用的引脚却忽略了 Bootloader 的引脚映射是固定死的。排障到这里我养成了一个习惯任何需要 UART 烧录的板子原理图上必须把 Bootloader 支持的串口引脚专门标出来放在醒目的位置。PCB 设计时也尽量把这组引脚引出成标准排针方便调试时接适配器。否则等项目做大了再回头找这组引脚翻原理图都翻半天。6. 常见问题速查表与避坑心得6.1 排障速查表下面这张表是我这几年排查 UART 烧录问题总结的速查表按照出现频率排序。每次遇到问题直接对照表格逐项查比盲猜效率高得多。症状常见原因处理方式设备管理器里没有 COM 口驱动没装 / USB 线只供电重新安装对应芯片官方驱动换数据线设备管理器里 COM 口带感叹号驱动不匹配 / 假芯片卸载驱动重装检查芯片丝印换适配器串口能打开但连接超时BOOT0 没拉高 / 没复位确认 BOOT0 到 3.3V硬件复位后再点 Connect串口能打开但连接超时UART 引脚不是 Bootloader 映射查 AN2606改用 USART1/3 等支持引脚串口能打开但连接超时TX/RX 接反交叉连接适配器 TX 接 MCU RX时好时坏共地不良 / 供电不足确认共地换供电口或 USB Hub连接成功但读不到 FlashRDP 读保护 Level 1执行 Mass Erase 解除保护或确认选项字节连接成功但擦除/写入失败选项字节被修改 / nBOOT0 异常用 ST-LINK 恢复选项字节或检查 RDP连接成功但一烧写就断波特率过高 / 线太长降到 115200缩短线长芯片完全无法连接RDP Level 2 已烧死无法通过 Bootloader 恢复只能换芯片这张表并不能覆盖所有问题但覆盖了我见过的 90% 场景。遇到不在表里的问题建议抓波形示波器同时看 TX 和 RX 两路能看到发送没收到、还是收到了没应答方向立刻明确。6.2 几个不容易想到的坑第一个坑是读保护 RDP。芯片出厂时 RDP 默认 Level 0但如果你用 ST-LINK 调试过且开启了读写保护或者中途烧录过某些配置RDP 可能被改成 Level 1。Level 1 下UART Bootloader 虽然能握手成功但读 Flash、写 Flash 等操作会被拒绝或者被要求先全片擦除。CubeProgrammer 会弹窗提示 Memory Protection 之类很多人看到英文提示就直接点掉没意识到这是保护在作怪。解决方法在 CubeProgrammer 里执行 Mass Erase 全片擦除把 RDP 恢复到 Level 0然后再正常烧录。但注意全片擦除会把芯片里已有的程序全部清掉操作前确认自己不需要保留任何数据。第二个坑是选项字节 nBOOT0。如果你之前用 ST-LINK 或者烧录软件改过选项字节把 nBOOT0 设成了 0BOOT0 引脚就会被忽略。表现在硬件上就是BOOT0 明明拉高了示波器量也有 3.3V但芯片就是死活不进 Bootloader。这个坑隐蔽在于电路没问题、引脚没问题纯是 Flash 里的配置字把引脚禁用掉了。解决方法是先用 ST-LINK 连上把选项字节恢复成出厂默认nBOOT01再走 UART 烧录。第三个坑是 NRST 引脚上的电容。很多板子为了抗干扰在 NRST 上并联了一颗 100nF 甚至更大的电容。正常情况下没影响但如果你用拉低 NRST 再释放的方式来触发复位大电容会让复位沿变缓芯片可能无法正确采样 BOOT0 电平。我刚才提到的案例里也遇到过类似情况最后改用断电重新上电的方式复位问题就解决了。如果你的板子不方便断电就用示波器确认复位脚波形质量。第四个坑是适配器供电能力。有些 USB-UART 模块会从 USB 取电同时给目标板供电。但 STM32H753ZI 是高性能芯片如果跑在 480MHz加上外设电流需求不小。模块上的 LDO 往往只有几十到一两百毫安根本喂不饱芯片在擦写 Flash 时电流瞬间增大电压跌落通信就中断了。排查方法是用手摸模块上的芯片发烫严重基本就是供电过载。建议给目标板单独供电只让适配器做通信两端地线共地即可。6.3 我的最后建议UART 烧录作为 STM32 的一种启动烧录手段确实方便因为它不需要额外的调试器一根 USB 转 TTL 线就能干活。但 H7 这种高性能芯片系统 Bootloader 的逻辑比老芯片复杂引脚映射、选项字节、读保护这些因素都会介入排障时不能只靠换根线试试。我个人在实际操作中的体会是UART 烧录适合量产产线、现场升级这种场景平时开发调试阶段还是优先用 ST-LINK 走 SWD 接口稳定、快、能调试。如果项目确实依赖 UART 烧录硬件设计时就把 BOOT0 跳线、Bootloader 串口引脚、NRST 复位按键都留好别等样品出来了再飞线。最后再分享一个小技巧每次 UART 烧录前先把串口助手打开手动给 MCU 发一个 0x7F 试试如果能收到 0x79 回应再打开 CubeProgrammer 肯定一遍过收不到就趁早回头查硬件不用在软件里反复点 Connect 浪费时间。