核心维修思路
“先外后内,先软后硬,先电源后信号”

- 先外后内:先检查MCU的外围电路,特别是电源、时钟和复位电路,这些是最常见的问题来源,也是最容易排查的,只有在确认外围电路基本正常后,再考虑是否是MCU本身损坏。
- 先软后硬:如果板子是之前能工作,现在突然黑屏,先考虑软件问题(如程序跑飞、死机),尝试通过调试器重新下载或复位程序,如果板子是全新的,则重点在硬件。
- 先电源后信号:任何芯片工作的前提是供电正常,第一步永远是测量电源电压。
第一步:准备工作与安全检查
-
工具准备:
- 万用表:必备,用于测量电压、电阻、通断。
- 示波器:强烈推荐!对于排查时钟、复位、通信信号等至关重要。
- 可调直流稳压电源:可以限制电流,防止短路损坏板子。
- STM32调试器/下载器:如ST-Link、J-Link、J-Trace等。
- 电烙铁、吸锡器、热风枪:用于拆装芯片。
- 放大镜或显微镜:用于检查虚焊、短路。
-
安全检查:
- 目视检查:仔细观察PCB板,寻找明显的损坏痕迹,如:
- 元器件烧毁、发黑。
- 电容鼓包、漏液。
- 虚焊、假焊(引脚锡珠、焊锡光泽不均)。
- PCB板上有划痕、断线。
- 有无金属碎屑或导电物导致短路。
- 测量电源对地电阻:
- 将万用表调到二极管档或电阻档。
- 分别测量所有电源引脚(如VDD, VSS, VDDA, VSSA)对地的阻值。
- 如果阻值非常小(接近0欧姆),说明存在严重短路。切勿上电! 必须先找到短路点,通常是滤波电容、MCU本身或其它IC损坏。
- 目视检查:仔细观察PCB板,寻找明显的损坏痕迹,如:
第二步:核心供电电路检查
这是维修的基石,STM32F103对电源要求较高,需要稳定的3.3V供电。
-
测量主电源电压:
(图片来源网络,侵删)- 找到板上的主电源输入点或LDO(低压差线性稳压器,如AMS1117-3.3)的输出端。
- 使用万用表测量该点对GND的电压,必须在3.2V ~ 3.6V之间,且稳定。
- 如果电压偏低或为0,说明前端供电电路有问题,检查LDO的输入电压、使能引脚、以及其输出端的滤波电容(通常是10uF或22uF的钽电容或陶瓷电容)是否损坏。
-
测量MCU电源引脚:
- STM32F103有多组VDD和VSS引脚,都需要供电,PB1脚就是VDD。
- 逐一测量MCU所有VDD引脚的电压,确保都在3.3V左右。
- 特别注意:VDDA(模拟电源)和VSSA(模拟地)也需要正常供电,如果ADC功能异常,但主程序不跑,也可能是VDDA供电问题。
-
检查电源纹波:
使用示波器测量VDD引脚的电压波形,如果纹波过大,说明电源滤波不好,可能导致MCU复位或不稳定,需要检查滤波电容是否失效。
第三步:关键辅助电路检查
如果供电正常,但MCU仍不工作,问题很可能出在下面三个“命门”上。

复位电路
- 作用:确保MCU在上电时能可靠地初始化内部状态。
- 检查方法:
- 上电瞬间:用示波器观察NRST(复位引脚)的波形,上电时,该引脚应有一个低电平脉冲(持续时间至少几个微秒),然后迅速被上拉电阻拉高到3.3V。
- 静态测量:用万用表测量NRST引脚的直流电压,应该是高电平(约3.3V),如果是低电平,说明复位电路一直处于有效状态。
- 常见故障点:
- 上拉电阻(通常为10KΩ)开路或阻值变大。
- 复位按键或其它元件对地短路。
- 复位电容漏电或失效。
时钟电路
- 作用:为MCU提供工作时钟,是程序运行的“心跳”。
- 检查方法:
- 外部晶振:STM32F103通常接一个8MHz的晶振(OSC_IN/OSC_OUT)和一个32.768KHz的RTC晶振。
- 用示波器测量OSC_IN引脚,上电后,应该能看到一个稳定的正弦波或方波,峰峰值接近VCC电压。注意:示波器探头会带来负载,可能导致波形异常,最好使用高阻探头(X10档)。
- 如果没有波形,可能是晶振损坏、负载电容(通常为15pF~22pF)开路或短路,或者MCU内部振荡器损坏。
- 外部时钟源:有些板子使用有源晶振(时钟发生器)。
测量其输出引脚,应该有稳定的方波输出。
- 内部时钟:如果外部时钟都坏了,MCU会自动切换到内部8MHz RC时钟,但这会影响性能和精度,通常不是首选,可以通过调试器来查看当前时钟源。
- 外部晶振:STM32F103通常接一个8MHz的晶振(OSC_IN/OSC_OUT)和一个32.768KHz的RTC晶振。
调试接口电路
- 作用:连接调试器,进行程序下载、调试和在线查看状态。
- 检查方法:
- SWD接口:这是STM32最常用的调试接口,包括4根线:
SWDIO、SWCLK、GND、3V。 - 连接检查:确保你的ST-Link与板子的SWD接口连接正确、牢固,检查排针或排母有无虚焊。
- 信号检查:将ST-Link连接好,打开调试软件(如Keil, STM32CubeProgrammer)。
- 如果提示“无法连接”或“目标未响应”,问题通常在SWD接口的电平或上拉电路。
- SWDIO上拉电阻:通常SWDIO线需要一个4.7KΩ ~ 10KΩ的上拉电阻到3.3V,如果这个电阻开路或未焊接,会导致通信失败。
- 线路通断:用万用表蜂鸣档检查SWDIO、SWCLK、GND、3.3V线路是否与MCU对应引脚(PA13, PA14)连通。
- SWD接口:这是STM32最常用的调试接口,包括4根线:
第四步:MCU本身及相关外围
如果以上所有电路都检查过且正常,那么问题就比较有可能是MCU本身或其直接连接的外设。
-
尝试连接调试器:
- 如果能连接上,但无法运行或看不到变量,说明MCU已经工作,但程序可能有问题(跑飞、死循环),尝试重新下载程序或进行全片擦除。
- 如果无法连接,并且你已经排除了SWD接口的故障,那么MCU损坏的可能性就非常高了。
-
检查BOOT引脚:
- STM32的BOOT0和BOOT1引脚决定了芯片的启动模式(从主Flash启动、从系统存储器启动、从SRAM启动)。
- 正常情况下,BOOT0应为低电平(接地),从Flash启动用户程序。
- 用万用表测量BOOT0引脚,如果被意外拉高(比如虚焊到上拉电阻或其它地方),MCU会尝试从系统存储器启动,这可能导致用户程序不运行。
-
检查GPIO口:
- 如果板上有LED灯,检查控制该LED的GPIO口配置是否正确,以及LED的限流电阻、LED本身是否损坏。
- 检查与MCU连接的其它IC(如串口芯片、驱动芯片)的片选、使能信号,看是否被意外拉低或拉高。
