
很多第一次接触STM32的工程师会选择直接买一块现成的开发板跑几个例程就算入门了。但等真正要做产品原型或者做一个小项目时就会发现自己画一块最小系统板竟然成了第一个拦路虎。我把话放在这里如果你能独立完成一块STM32F103RCT6最小系统板的设计、焊接和调试你对单片机系统的理解深度会远超只会用开发板的人。这篇文章就把我前前后后设计、打样、调试F103RCT6最小系统板的完整过程拆给你看从芯片选型、原理图要点、PCB布线的关键细节一路讲到焊接上电、Keil下载和串口调试重点说说那些参考手册里不会写、但实际画板时一定会踩的坑。这块板子的定位很明确不需要复杂外设全部引脚引出供电和调试接口可靠接线灵活能当“半成品核心板”用。适合正在做课程设计、毕业设计或者想把手里的F103RCT6芯片利用起来做项目验证的朋友。1. 整体设计与思路拆解1.1 为什么选F103RCT6而不是C8T6很多人习惯用STM32F103C8T6便宜、资料多、网上例程铺天盖地但它在做实际项目时有个很尴尬的限制Flash只有64KBRAM只有20KB。如果你只是想点个灯、跑个串口那没问题一旦你要上无刷电机FOC驱动或者跑RTOS加图形界面64KB的Flash分分钟爆掉。F103RCT6的Flash是256KBRAM是48KB引脚48个比C8T6多了4个。更重要的是RCT6的Flash容量足够塞下标准外设库加上FOC代码这也是网上搜索“stm32f103rct6无刷电机foc驱动代码”能找到大量案例的原因。两者引脚完全兼容你在C8T6上调通的程序换到RCT6上几乎不用改。从成本上考虑RCT6比C8T6贵不了几块钱但换来了4倍Flash。我的建议是只要不是做消费级极低成本量产直接选F103RCT6开发阶段不用天天纠结资源不够用。1.2 最小系统板的核心组成所谓“最小系统”说白了就是让芯片能跑起来的最基本电路。STM32F103RCT6最小系统板至少需要以下几部分电源电路把外部输入的5V转化为3.3V给芯片和各外设供电。复位电路让芯片在上电时或手动复位时程序从头执行。时钟电路外部高速晶振8MHz和外部低速晶振32.768kHz为系统提供精准时钟源。启动模式配置通过BOOT0和BOOT1引脚的电平设置决定芯片从哪个存储区启动。下载调试电路SWD两线调试接口用于程序下载和在线调试。指示灯电路至少一个电源指示灯和一个用户LED方便观察运行状态。1.3 设计目标与使用场景我设计这块板子的目标很明确尺寸紧凑做到5cm×5cm以内方便嵌入到各种项目里。电源输入灵活既支持USB供电也支持外部5V或者3.3V直供。所有IO全部引出用排针引出方便飞线调试。调试接口独立SWD口放在板边方便插接ST-Link。考虑的使用场景包括无刷电机FOC驱动实验对定时器输出PWM和ADC采样要求高、编码器测速需要外部中断和定时器编码器模式、串口通信调试等等。所以设计时特别注意了电源噪声控制和引脚分配的合理性。2. 原理图设计核心细节2.1 电源电路最小系统的命脉电源是整个最小系统工程重中之重。STM32F103的数据手册明确规定正常工作电压为2.0V~3.6V建议稳定在3.3V。我采用的是最经典也最稳妥的LDO方案AMS1117-3.3。原理图设计上我的做法是5V电源输入端接一个100uF电解电容和一个0.1uF陶瓷电容负责滤除低频和高频噪声。AMS1117输出3.3V后接一个10uF钽电容和两个0.1uF陶瓷电容。最关键的一步在芯片VDD引脚附近每个电源引脚都放一个0.1uF去耦电容并且尽量靠近引脚放置。这不是可有可无的高频噪声主要靠这些小电容就近吸收。注意AMS1117的最大输出电流是1A但LDO压差比较大5V转3.3V时效率只有66%。如果后续要驱动无刷电机或者大功率外设建议在主板上单独供电最小系统板只供逻辑部分。如果是纯3.3V供电的应用也可以跳过LDO直接在3.3V输入端接好滤波电容即可。但大多数场景下保留5V输入更灵活。2.2 复位电路别小看那个10K电阻和电容复位电路的原理很简单复位引脚NRST为低电平时芯片处于复位状态。上电瞬间电容两端电压不能突变NRST引脚被拉到低电平随后通过电阻充电慢慢升到3.3V等电压超过高电平阈值后芯片开始运行。复位电路参数计算复位低电平持续时间由RC时间常数决定τ R × C我用的是10KΩ电阻和0.1uF电容τ 10KΩ × 0.1uF 1msSTM32要求复位低电平至少持续2.5个机器周期1ms的复位时间完全满足要求。实际画图时我在NRST引脚上还加了一个10nF电容到地用来滤除高频干扰防止误复位。这是很多参考设计里会忽略的细节。另外记得在复位按键两端并联一个按键方便手动复位。2.3 时钟电路晶振的负载电容怎么算STM32F103RCT6最高工作频率72MHz通过内部PLL锁相环倍频实现。PLL锁相环的参考源有两个选择内部8MHz RC或外部8MHz晶振。外部晶振比内部RC精度高得多所以我的做法是必须接外部8MHz晶振。实现方案是在OSC_IN和OSC_OUT引脚之间接8MHz晶振配上两个负载电容。负载电容的选择直接决定晶振能否正常起振、频率是否准确。常用公式是CL (C1 × C2) / (C1 C2) Cstray其中Cstray是PCB走线和引脚寄生电容大概3~5pF。如果选用负载电容CL20pF的晶振两个电容C1C2取18pF左右代入公式CL (18 × 18) / (18 18) 4 9 4 13pF这个值偏小。所以我实际选用的是两个16pF电容配合8MHz晶振起振稳定实测频率误差很小。如果是6pF负载的贴片晶振电容就要换成8~10pF。另外RTC实时时钟需要32.768kHz晶振如果你只是做普通的控制类项目不用RTC功能这部分的晶振可以不焊不影响主系统运行。2.4 下载调试电路必须用SWD而不是JTAGSTM32支持JTAG和SWD两种调试方式。我在最小系统板上只引出SWD接口原因很简单SWD只需要两根线SWDIO和SWCLK加上GND和3.3V一共四根线就能下载和调试而JTAG至少要5根占用GPIO更多对于PCB面积紧凑的板子很不友好。SWD接口在原理图上的设计要点SWDIOPA13和SWCLKPA14直接连到调试口。强烈建议在SWDIO和SWCLK上分别串一个33Ω电阻并且在SWCLK上加一个1nF电容到地。这样能有效抑制下载线过长时产生的振铃信号解决很多“连不上调试器”的问题。NRST引脚也引到调试口方便调试器在连接失败时强制复位芯片。2.5 BOOT配置三个状态一个都不多余STM32的启动方式由BOOT0和BOOT1引脚的电平决定。最小系统板必须支持以下三种状态BOOT0BOOT1启动模式使用场景0X从Flash启动正常运行程序10从系统存储器启动烧录Bootloader恢复固件11从SRAM启动调试用一般用得少我用的方案是BOOT0通过一个10KΩ下拉电阻默认接地再通过一个跳线帽可以选择接3.3V。BOOT1同理但更多时候不需要跳线用一个10KΩ下拉电阻固定接地即可。实际使用中只有一种情况需要改BOOT0芯片Flash被锁死或者程序跑飞无法下载时接上跳线让芯片从系统存储器启动然后重新烧录再把跳线恢复。这个功能调试时救过我好几次命。2.6 用户LED和按键电路看着简单其实有讲究LED电路的核心参数是限流电阻计算。LED的正向压降通常在1.8V~2.0VSTM32 GPIO输出高电平时3.3V所以限流电阻的压降约为3.3V - 2.0V 1.3V。如果要让LED工作电流为5mA限流电阻为R 1.3V / 5mA 260Ω取标准值330Ω实际电流约4mA作为电源指示灯和用户指示灯人眼看起来亮度已经足够。千万别直接省略限流电阻一个LED直连3.3V轻则迅速烧毁重则把引脚搞坏。用户按键的电路也很关键。按键两端分别接GPIO和GND同时在GPIO上加一个10KΩ上拉电阻。这样平时引脚为高电平按下按键后为低电平通过读取引脚电平检测按键状态。如果不加上拉电阻引脚悬空时电平状态是随机浮动的按键检测时好时坏。3. PCB布局布线实操要点3.1 布局原则主控居中功能分块原理图画完之后印制电路板PCB布局布线直接决定这块板子的稳定性。布局不好后面调试时会莫名其妙地出问题。我的布局顺序是主控芯片放正中间定位好方向后先摆晶振和去耦电容再摆电源部分最后是接口和按键LED。这样做的目的很明确去耦电容离芯片越近效果越好晶振远离板边和发热源电源部分集中在一侧方便散热和走线。以5cm×5cm的板子为例MCU放在中心偏上位置左侧是SWD调试口下侧是电源输入右侧引脚排针按组排列电源部分集中在左下角。这样左右两侧的排针走线相对均衡不会出现一侧布线密一团、另一侧空荡荡的情况。3.2 晶振布线最容易被忽视的细节点晶振部分的处理是在PCB布线时需要重点关注的区域如果你在这里偷懒画着舒服之后芯片很容易出现时钟不稳定的情况晶振下方禁止走其他信号线尤其是电源线和高速信号线。晶振本身是干扰源下面的走线容易被干扰产生辐射噪声。晶振和负载电容的地脚通过独立的过孔就近连接到GND铜皮面积尽量大形成完整的地平面。晶振封装两端走线尽量等长且靠近使寄生电容一致。晶振和STM32的OSC_IN、OSC_OUT引脚走线越短越好不要绕弯更不要打过孔。我在第一版PCB设计时因为晶振布局不当结果系统时钟出现偶发偏差串口数据偶尔乱码。后来把晶振挪到靠近芯片的位置问题才解决。3.3 电源布线芯片能不能稳定跑就看这一步STM32在运行时的瞬态电流变化非常快尤其是时钟翻转和IO翻转时如果电源内阻过大会引发电源电压跌落造成系统复位或程序跑飞。我的布线经验是3.3V电源网络采用星型连接——从AMS1117输出端先到MCU电源引脚再分支到其他外设电源。而不是像串糖葫芦一样从一个器件穿到下一个器件。星型连接的好处是各个负载之间的干扰不会互相传递。具体操作上电源走线宽度要足够。3.3V主电源线宽度至少20mil约0.5mm5V输入线至少30mil约0.75mm地线尽量铺铜处理打满过孔形成完整的回流路径。很多新手画板时电源线和信号线一样粗芯片重载时电压跌落严重就是这个原因。3.4 原理图中的栅格设置与绘图规范如果你用的是Altium Designer或者嘉立创EDA画原理图有一个细节特别影响效率图纸栅格设置。我在标题相关的热词里看到很多人搜“AD原理图设置栅格”画图时确实卡过壳。Altium Designer中快捷键G可以快速切换原理图栅格大小。我建议原理图中用10mil标准栅格对齐引脚和连线。绘图纸张选择A4能放下整个最小系统电路。电源符号统一用VCC_3.3V、VCC_5V命名不要直接用VCC避免混淆。所有阻容器件的标号按区域命名C1~C10、R1~R10方便焊接时对料。在嘉立创EDA上操作类似画原理图时需要把栅格设置为同等间距以便引脚对齐和端口对接否则连线时总是出现三角形小绿帽子。3.5 PCB规则设置与铺铜在投板之前不要忘记设置PCB设计规则最小线宽10mil最小线距10mil最小过孔内径0.3mm、外径0.6mm。电源线单独设定更宽的线宽约束。对整板进行GND铺铜并在铺铜上打密集过孔连接顶层和底层地降低地回路的阻抗。铺铜是消除地回路电感最有效的手段尤其是两层板设计中完整的底层地平面几乎决定整板性能。我用的嘉立创打样把最小系统板做成了2层板底层大面积铺铜效果很好。4. 焊接与硬件上电调试4.1 焊接顺序为什么必须先焊电源部分拿到打样好的PCB板子先别急着把所有元器件都焊上去。我的焊接顺序是先焊电源部分AMS1117、输入输出电容、电源指示灯。单独给电源部分上电用万用表测量输出电压是否为3.3V。再焊MCU周围STM32芯片、去耦电容、复位电路、晶振。最后焊接口和外设排针、按键、调试接口。为什么先焊电源这是因为如果电源部分有问题后焊的芯片和器件可能在第一次上电时就遭到烧毁损失就大了。电源单独上电确认电压准确后再接芯片可以避免大部分事故。4.2 上电前的“三查”在上电之前为了保险起见我强烈建议你做三件事第一查短路检查。用万用表蜂鸣档测量5V和GND之间、3.3V和GND之间的阻值。如果蜂鸣器响说明有短路禁止上电。常见原因是电容焊反钽电容极性接反会短路且可能起火或者芯片引脚连锡。第二查极性检查。电解电容、钽电容、LED、二极管等有极性的元件焊完后逐个确认极性方向是否正确。LED的正负极和丝印标识要对应电容正负极的标注在PCB丝印上要画清楚。第三查焊点质量。用放大镜检查芯片引脚是否有连锡、漏焊。STM32F103RCT6是LQFP48封装引脚间距只有0.5mm连锡在焊接新手那里极其常见。用松香加拖焊法能大幅降低连锡率焊完再用酒精洗板效果更好。4.3 上电调试流程与异常排查一切检查完毕可以上电了。这里要提醒第一次使用直流稳压电源比USB供电更安全把电流限制在100mA左右如果电路异常电流不会超过限值不易烧坏芯片。上电调试的流程用万用表测量3.3V电压正常在3.30V±0.05V范围内。测量AMS1117输入端电压确保5V供电到位。打开示波器测量8MHz晶振引脚正常能看到8MHz正弦波或方波波形。如果没有示波器可以在程序里配置MCO引脚输出系统时钟用万用表频率档看是否有信号。按一下复位按键观察复位引脚电压是否拉低后回到高电平。测量BOOT0引脚电压应该是0V低电平确保从Flash启动。如果一切正常接入ST-Link尝试连接芯片。我在一次调试中遇到上电后芯片没有任何反应3.3V正常8MHz晶振正常但芯片连不上ST-Link。最后查到是BOOT0引脚被我用跳线帽接到了3.3V芯片处于启动加载模式无法正常连接。把这个跳线取下后就恢复了。5. 软件环境搭建与程序调试5.1 Keil MDK工程配置的关键步骤硬件调试通过之后就轮到软件了。STM32F103RCT6开发最常用的IDE是Keil MDK配合STM32标准外设库或寄存器开发。新建工程的步骤看起来简单但有不少细节会影响后续调试在Device选项卡中选择STM32F103RC注意选对具体型号。在Target选项卡中设置晶振频率为8.0MHz勾选“Use MicroLIB”微库这个微库占用的Flash更少。在Output选项卡中勾选“Create HEX File”方便后续用串口ISP方式烧录。在Debug选项卡中选择ST-Link Debugger并在Settings里确认能正确识别芯片ID。在Flash Download选项卡中设置烧录算法为STM32F10x Med-density Flash 256K。其中最容易出问题的是烧录算法选择错误比如用低密度Flash的算法烧中密度芯片下载时会出现Flash下载失败的错误。RCT6是256KB容量属于中容量对应的是Med-density算法。5.2 第一个程序用主题函数点亮LED硬件板子回来后第一个程序永远不建议直接跑复杂的外设先点亮板载LED最简单、最能验证整个链路是否通畅。下面是一段基于寄存器操作的点灯程序#include stm32f10x.h void Delay(void) { unsigned int i; for (i 0; i 500000; i); } int main(void) { RCC-APB2ENR | RCC_APB2ENR_IOPBEN; // 开启GPIOB时钟 GPIOB-CRH ~(0x0F 8); // 清空PB13配置位 GPIOB-CRH | (0x02 8); // PB13设置为推挽输出模式 while (1) { GPIOB-ODR | (1 13); // PB13输出高电平LED灭 Delay(); GPIOB-ODR ~(1 13); // PB13输出低电平LED亮 Delay(); } }这段程序用寄存器方式操作GPIOB第13脚。编译下载后如果LED正常闪烁说明最小系统板的电源、复位、时钟、下载调试链路全部正常。这一步成功之后再跑外设库例程时出了问题可以基本确定问题在程序本身而不是板子。5.3 串口调试串口调试助手的正确打开方式串口是实现调试信息输出最常用的手段。我板子上用USART1引脚是PA9TX和PA10RX通过USB转TTL模块连到电脑用串口调试助手看输出。初始化串口的代码有很多版本核心设置就几项波特率、数据位8位、停止位1位、无校验。我用的是115200波特率配置代码如下#include stdio.h int fputc(int ch, FILE *f) { USART_SendData(USART1, (uint8_t) ch); while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) RESET); return ch; } void USART1_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; GPIO_Init(GPIOA, GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, GPIO_InitStructure); USART_InitStructure.USART_BaudRate 115200; USART_InitStructure.USART_WordLength USART_WordLength_8b; USART_InitStructure.USART_StopBits USART_StopBits_1; USART_InitStructure.USART_Parity USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode USART_Mode_RX | USART_Mode_TX; USART_Init(USART1, USART_InitStructure); USART_Cmd(USART1, ENABLE); }串口调试有几点经验发送数据前确认波特率两边一致最常见的问题就是电脑端选错波特率导致收到的全是乱码。串口助手建议选择SSCOM或者友善串口助手设置简单、稳定不丢包。调试无刷电机FOC的时候我习惯直接把电机转速、电流和母线电压通过串口发送出来用串口助手波形显示功能实时观察数据曲线比单独用示波器直观得多。5.4 Keil调试模式下如何查看结构体变量热词里有人问到“Keil调试助手里面的debug模式如何显示结构体变量”这个问题在调试FOC这类算法代码时几乎天天遇到。跑FOC时内部状态全部封装在结构体里比如电机电流的Clark变换、Park变换结果都是结构体成员。操作路径是在Keil里点击“Debug”进入调试模式。菜单栏选择“View” - “Watch Window” - “Watch 1”。在Watch窗口底部输入结构体变量名回车。点击变量名前的箭头展开查看每个成员的数值。需要注意的是结构体成员实时数值只有在程序暂停时才会刷新。若是要看连续变化的数据用Watch窗口不太方便凯尔放大镜记得配合逻辑分析仪在调试窗口中添加IO口翻转型号或者直接通过串口把结构体数据打出来。另外一个技巧是鼠标悬停在代码中的结构体变量上Keil会弹出一个浮动窗口显示该变量的当前值不需要手动添加Watch。对于快速查看数据来说这种方式比添加Watch窗口更高效。6. 常见问题与排查技巧实录6.1 故障速查表这块最小系统板打样验证过程中我一共遇到和预防过下面这些故障整理成速查表供大家对照排查故障现象可能原因排查方法解决方案3.3V电压偏低或为零AMS1117损坏、输入5V接线错误、有短路测量输入端电压断电测3.3V与GND阻值更换芯片修正接线检查短路点芯片无法连接ST-LinkSWDIO/SWCLK接反或没接BOOT0被拉高目标供电不足检查SWD接线顺序测量BOOT0电压确认3.3V正常按丝印重插调试线BOOT0接地独立供电给目标板SWD能连接但下不进程序烧录算法选错芯片Flash写保护打开查看Flash Download的算法设置检查调试器设置界面更换为Med-density 256K算法在设置里解除读写保护程序能下载但LED不闪烁GPIO配置错误LED极性接反限流电阻过大示波器或者万用表量GPIO输出电压检查GPIO模式配置确认LED方向串口输出乱码波特率不一致两板GND不共地TXRX接反确认波特率设置用万用表量A9/A10电平交换TX和RX统一波特率串口模块与目标板共地晶振不起振电容值不对晶振损坏焊盘连锡直接短路示波器量OSC_IN引脚拆掉悬空量晶振两端更换晶振电容用风枪重焊晶振上电后电流很大某个电容极性接反芯片引脚连锡短路用手摸芯片和电容温度断电用放大镜检查引脚重新拖焊更换反接电容复位后程序不运行BOOT0/BOOT1配置错误复位电容太大导致复位时间过长测BOOT0电压按复位键后测NRST电压上升时间修正跳线帽减小复位电容6.2 晶振不起振问题的深度排查晶振不起振是新手设计最小系统板时最头疼的问题之一。我复盘自己遇到过的晶振问题核心原因一般有三个第一是负载电容不匹配。用39pF的大电容去配8MHz晶振振荡幅度太低芯片内部反相器无法稳定起振。正确做法是用16pF左右电容。第二是PCB走线寄生电容过大。晶振引脚走线太长或者底部有地平面会造成等效负载电容偏大。处理方法是把晶振挪到芯片附近下方铺地挖空。第三是晶振本身质量太差。普通直插晶振和贴片晶振的起振特性有区别贴片晶振需要更小的负载电容。采购时买正规品牌如TXC、NDK、Epson别贪便宜。如果你有示波器直接把探头夹在OSC_IN引脚上正常起振时能看到清晰的8MHz正弦波。需要注意的是示波器探头的电容约10~15pF本身会改变振荡频率这是正常现象只要能看到波形就说明在振荡。如果看到的是直流电平毫无波形基本可以断定起振失败。6.3 下载失败“No target connected”的排查思路“No target connected”是STM32调试最经典的报错。虽然现象一样但原因可能千差万别。我的排查顺序是确认接口接线SWD标准接线顺序是3.3V、SWDIO、SWCLK、GND不同调试器的丝印可能不同极易接错线。如果目前接了JTAG转SWD的板子注意里面的跳线和电平转换。测量芯片电源买一个带电压显示的ST-Link看目标板供电是否正常。有些ST-Link供电能力弱带不动整个板子。强制复位连接按住板子上的复位按键不松手点Keil里“Connect”让调试器在芯片复位状态下建立连接然后再松开复位键。这个方法能救回来不少“卡死在未知状态”的芯片。检查BOOT0状态确认BOOT0是低电平。如果被跳线帽接高芯片从系统存储器启动应用区的程序无法被正常调试。还有一个容易被忽略的因素是下载线的长度和线序。我曾经用一根10厘米长的杜邦线连接ST-Link和板子死活连不上后来把线剪短到5厘米以内就正常了。SWD对信号质量要求不算苛刻但寄生电容太大时推荐在SWCLK上加电容匹配。6.4 调试无刷电机FOC时的特殊注意如果你和我一样画最小系统板是为了跑无刷电机FOC驱动有两件事要在画板时提前想好第一ADC采样引脚要远离PWM输出引脚。FOC算法需要同时采集两相电流和母线电压这些引脚通常分布在PA0~PA7上而PWM输出在PA8~PA11上。两者靠得太近PWM的开关噪声会耦合到ADC采样信号上导致电流波形毛刺严重估算出来的转子角度就不准了。布局时尽量把模拟采样部分和功率输出部分分开。第二板子要预留3.3V电压基准引脚。FOC电流采样需要使用内置ADC的参考电压普通用法就是把VDDA引脚接3.3V即可。SSOP封装下VDDA和VSSA引脚在芯片一角要注意在边上放足够的去耦电容。若是追求更高采样精度可以单独外接一个3.3V基准源通过跳线选择内置电源还是外部基准。代码层面FOC算法强依赖定时器功能F103RCT6的TIM1和TIM8是高级定时器能输出互补PWM并带死区是驱动PMSM电机的硬件基础。调试时我习惯先把PWM输出的占空比固定用示波器确认波形和死区时间再跑FOC控制算法。6.5 常用调试工具推荐与配置工具链目前最常用的组合简单列一下调试器ST-Link V2或者V3兼容性好、驱动简单。如果是离线下载也可以用J-Link但需要配置CMSIS-DAP驱动。串口助手SSCOM老牌稳定如需波形显示用Serial Plot或者VOFA直接解析串口数据画曲线调试PID用起来非常方便。固件库STM32F10x标准外设库虽然官方已停止更新但网上例程海量新手入手容易。如果你想用HAL库代码风格更标准但初始化配置代码相对较长。电源实验室直流稳压电源设定5V和100mA限流防烧板神器。如果没有用USB HUB的5V供电也行但注意电流限制。结尾个人经验做完整的ST32F103RCT6最小系统板从原理图设计到PCB打样、焊接调试整个流程走下来最大的体会就是每一处“小细节”都是大问题。晶振电容选大一点可能就不起振电源线画细一点芯片重载就复位SWD线序插反调试器直接连接失败——这些教训只有自己踩过一遍才能真正刻在脑子里光看书是学不会的。最后再分享一个我个人的习惯板子到手后先用万用表的蜂鸣档把所有的电源网络都测一遍再上电。这个动作看起来多花了几分钟实际上帮你省下的是数不清的烧芯片和找bug的时间。希望这篇文章能让你少走一些我走过的弯路祝你的最小系统板一次点亮。