
简介面向Altium Designer初学者与硬件开发者的33个经典电路制作实例合集围绕原理图绘制、PCB布局、电路仿真与制造文件输出等核心流程提供可直接上手练习的工程素材帮助读者从看懂电路图逐步过渡到独立完成简单设计。压缩包共535个文件约36.3MB包含33个dsn原理图工程及配套pwi、opt、uv2等工程与布局文件另有c、hex、m51等单片机源代码与烧录文件以及pdf、jpg等说明文档和截图目录按实例组织便于逐个对照学习。已有3567人学习下载适合作为课程实验、自学入门和项目复现的参考。实例覆盖LED流水灯、数码管动态显示、独立按键与矩阵键盘、外部中断计数、模拟交通灯、继电器控制、按键发音等典型场景读者可结合电路图与源代码理解从原理到实现的完整链路积累常见电路模块的设计与排错经验。1. 33 个经典电路制作实例先看清它能替你省掉哪段重复劳动带过几个刚上手的同事之后我发现一个规律能把 Altium Designer 用顺手的往往不是教程看得最多的那个而是把一块现成的板子从原理图改到出 Gerber 完整走过一遍的那个。这份 33 个经典电路制作实例的压缩包价值就在这里——它把电源、运放、数字逻辑、单片机最小系统这些最常见电路连电路图带源代码一起摆出来省掉的是从零建符号库、从零猜封装、从零试设计规则的时间。它适合已经会拉线但没完整出过板的人也适合画了很多板却从没回头核过封装和 DRC 的人。按我实际拆包的顺序往下走先立骨架再啃原理图然后落到 PCB最后把源码和出图对上。2. 工程骨架先立住从压缩包到能编译的 .PrjPcb很多人拿到这种整包资源第一反应是双击里面某张.SchDoc看个新鲜。看完关掉第二天再打开发现库没了、工程结构散了、编译报一堆找不到封装的错。问题的根源不在实例本身而在于你打开它的方式。Altium Designer 的工程是有层次的.PrjPcb记录了这个工程包含哪些文档、编译选项是什么、输出作业挂在哪里.SchDoc和.PcbDoc只是被它管理的成员。脱离工程单独打开一个文档库搜索路径、参数、Room 定义全都不完整后面的坑基本都从这里长出来。2.1 解压后先做文件分诊别急着双击我一般会先把压缩包解到一个纯英文路径下然后按扩展名过一遍心里有个数哪些是设计文件哪些是库哪些是编译产物哪些是固件源码。这套动作花不了两分钟但能避免后面反复找文件。33 个实例里文件类型不会完全一致常见的是下面这几类。扩展名是什么处理方式优先级.PrjPcb工程文件记录文档清单与编译设置双击打开后续所有操作都从它进最高.SchDoc原理图文档由工程面板打开不要单独双击高.PcbDocPCB 文档同上高.SchLib/.PcbLib符号库 / 封装库加入工程或装到 Libraries 面板高.IntLib编译后的集成库通过 Installed Libraries 安装中.OutJob输出作业配置用 OutputJob Editor 打开中.BomDocBOM 文档报表只读低.c/.h/.asm固件源码用外部 IDE 打开与硬件对账视实例分诊的时候有个细节值得留意如果压缩包里同时存在.SchLib和.IntLib优先用.SchLib。集成库是编译产物里面的符号和封装是打包死的你改了源库它不会自动跟着变等到 PCB 阶段才发现封装对不上返工成本就大了。反过来如果只有.IntLib没有源库那就得先用库面板把它解开生成对应的 SchLib/PcbLib否则你连一个焊盘尺寸都改不了。提示解压路径里不要出现中文、空格和括号。Altium Designer 的部分输出作业、脚本和第三方 Gerber 工具对这类路径处理得并不好出错信息还特别含糊属于典型的玄学问题源头。2.2 版本兼容与打开顺序先开工程再开文档.PrjPcb双击之后工程面板里应该能看到完整的文档树。如果打开时报错说文件版本比当前软件新说明这份资源是在更高大版本的 Altium Designer 里保存的。文件格式是向上兼容、向下不兼容的高版本能读低版本低版本读不了高版本。遇到这种情况常见做法有三条路按代价从低到高排换用与资源同代或更高版本的软件打开这是最省事的。在File » Save As里看看有没有可选的旧格式条目。不同大版本提供的另存格式选项不一样有就另存一份没有就别在这上面耗时间。高版本照常打开然后新建一个空白.PrjPcb把SchDoc、PcbDoc、库文件用Add Existing to Project一个个加进去。工程文件本身只是个索引重建一次不损失设计内容代价是编译设置和输出作业要重新配一遍。重建工程这条路我走过不止一次经验是重建完立刻做一次Project » Compile PCB Project把 Messages 面板里的错误清干净再往下走。带着一堆未连接的引脚去导 PCB后面排查起来就是黑匣子。打开顺序上还有个容易忽略的点先开工程等工程面板把文档树加载完再双击具体的原理图。这样库的搜索路径、工程级参数、变体设置都会跟着生效。反过来先双击.SchDoc软件会把它当成一个游离文档打开此时按Tools » Footprint Manager看到的封装信息可能是不全的。2.3 目录规范为什么我把中文路径全部改掉实例包解压出来往往是一个大平层几十个文件夹堆在一起命名风格还不统一。我习惯先按「一个实例一个工程」重排一遍结构大致是这样AD_Examples/ ├── 01_Power_5V/ │ ├── Project/ # .PrjPcb .SchDoc .PcbDoc │ ├── Library/ # .SchLib .PcbLib .IntLib │ ├── Output/ # Gerber、钻孔、BOM、坐标文件 │ └── Doc/ # 截图、说明、原始源码 ├── 02_OpAmp_Front/ └── ...这么排的理由很实际。第一输出目录独立出来出图的时候整个文件夹打包发给板厂不会把工程文件混进去。第二库目录独立方便你在多个实例之间复用同一个符号库——33 个实例里电阻电容三极管这些基础件是重复的没必要每个工程存一份。第三源码单独放改固件的时候不会误删硬件文件。路径命名我强制用英文加下划线不用中文也不用空格。前几年吃过一次亏一个工程的输出目录带了中文Gerber 打包时某个层文件的名字被截断板厂那边少了一层来回沟通了两天。从那以后所有工程的路径都走这套规范一次没再翻过车。2.4 一段 DelphiScript先把封装缺失的元件揪出来在正式看原理图之前我会先跑一遍脚本把「没有指定封装」的元件列出来。这一步看着多余实际上是整条链路里性价比最高的检查原理图上少一个封装导 PCB 的时候就会多一个 Unknown Pin 报错而那个报错信息往往只给位号不给原因新手很容易卡在这里。Altium Designer 自带脚本引擎支持 DelphiScript、VBScript、JavaScript。下面这段是 DelphiScript逻辑是遍历当前打开的原理图统计元件总数并列出封装字段为空的位号。{ 用途扫描当前原理图列出未指定封装的元件 } Procedure ListMissingFootprint; Var Sch : ISch_Document; Iterator : ISch_Iterator; Comp : ISch_Component; Total, Bad : Integer; Report : TStringList; Begin Sch : SchServer.GetCurrentSchDocument; If Sch Nil Then Begin ShowMessage(先打开一张原理图再运行); Exit; End; Total : 0; Bad : 0; Report : TStringList.Create; Iterator : Sch.SchIterator_Create; Iterator.AddFilter_ObjectSet(MkSet(eComponent)); // 只遍历元件对象 Try Comp : Iterator.FirstSchObject; While Comp Nil Do Begin Inc(Total); // CurrentPartIDLibraryLink 为空 该元件没有绑定任何库封装 If Trim(Comp.CurrentPartIDLibraryLink) Then Begin Inc(Bad); Report.Add(Comp.Designator.Text | Comp.Comment.Text); End; Comp : Iterator.NextSchObject; End; Finally Sch.SchIterator_Destroy(Iterator); End; Report.Insert(0, 共 IntToStr(Total) 个元件其中 IntToStr(Bad) 个未指定封装); Report.SaveToFile(C:\AD_Check\missing_footprint.txt); ShowMessage(Report.Text); Report.Free; End;逻辑不复杂几个关键点说明一下。SchServer.GetCurrentSchDocument拿的是当前激活的原理图文档所以运行前必须先把目标图纸切到前台否则直接弹提示退出。AddFilter_ObjectSet(MkSet(eComponent))是对象过滤器不加这一句迭代器会把导线、网络标签、文本全部当对象吐出来遍历次数翻好几倍还容易出类型错误。CurrentPartIDLibraryLink返回的是当前 part 绑定的库链接字符串形如MiscellaneousDevices:0603空字符串就代表这个元件在原理图里是个「裸符号」没挂封装。最后的SaveToFile建议改成一个固定存在的目录第一次跑之前先把文件夹建好脚本不会帮你创建。运行方式是File » Run Script选中脚本文件里的这个过程名直接执行。脚本 API 在不同大版本之间会有小幅变动如果某一行编译不过用脚本调试器打断点看一眼对象属性通常换个属性名就能过。跑完这一步你手里就有了一份「待补封装清单」。带着它去看原理图比漫无目的地翻页效率高得多。3. 原理图这一关符号、网络标签和一次可信的编译原理图在很多人眼里只是「画给 PCB 看的一张图」实际上它承担了三件事定义电气连接关系、绑定封装信息、给下游输出提供参数。33 个实例之所以值得拆是因为它们覆盖了从分立器件到数字接口的常见画法你可以在里面看到别人怎么处理电源符号、怎么划分层次、怎么给测试点留位置。但直接照抄会出问题得先弄明白它为什么这么画。3.1 从实例反推符号库Generate Schematic Library 之后要改什么打开一个实例的原理图第一件该做的事不是看电路而是看元件用的是哪家的库。在原理图编辑器里执行Tools » Generate Schematic Library软件会把当前图纸里用到的所有符号抽出来生成一个独立的.SchLib。菜单位置在不同大版本里略有挪动找不到就在 Tools 菜单下翻一遍。生成的库不是拿来就能用的有三处必须人工过一遍第一引脚编号和名称。实例里的符号经常只显示编号不显示名称或者把名称藏在很长的字符串里。双击符号进库编辑器把每个 Pin 的Designator编号和Name名称对一遍尤其是多引脚器件。编号错了PCB 那边一定连不上名称错了读图的人会看晕。第二隐藏引脚。这是最容易埋雷的地方。有些符号把电源脚设成HiddenAltium Designer 的规则是隐藏引脚会自动连到同名网络。看着图上没接线实际上已经连上了。如果实例的隐藏引脚名和你的网络名对不上编译时就会冒出一堆莫名其妙的连接。处理办法是在库编辑器里双击该引脚把Hide勾掉改成显式连线。第三参数与封装链接。符号里通常带着Comment、Value、Footprint这几个参数。导出的库会保留它们但指向的封装库路径可能还是原作者机器上的绝对路径。把Footprint参数重指向你自己工程Library目录下的封装库是避免「打开就报找不到封装」的关键一步。库改完之后通过工程面板右键Add Existing to Project把它加进工程。下次画新图直接从工程内的库调用比装到全局库更可控——工程级的库跟着工程走拷给别人不会丢。3.2 网络标签的三种作用域别把 Port 当 Net Label 用实例里跨图纸的连接很常见电源板加控制板、主控加外设都是层次原理图。这时候网络标签的作用域就变成了必须搞清楚的东西搞错了现象很典型原理图看着连得好好的一编译就报某个网络只有一个引脚。Altium Designer 里管连接的东西主要有三种作用范围完全不同。Net Label网络标签只在当前这一张图纸内有效。同名标签在两张不同的图纸上默认不连通。Port端口配合层次图的Sheet Symbol和Sheet Entry使用用于父子图之间的信号传递。端口名必须和 Sheet Entry 名严格一致大小写敏感。Power Port电源端口全局有效VCC、GND、3V3这类跨图纸自动连通这也是为什么电源符号到处放都不会出问题。乱用的后果很直接。把Port当Net Label用单页图里能连通一旦拆成层次图就断把Net Label当全局用编译时Messages面板会告诉你这个网络只有一个引脚但你不一定能反应过来是作用域的问题。我一般的做法是单页图内一律Net Label跨页一律Port电源一律Power Port三者不混用。33 个实例里如果有画得不规范的正好拿来当反面教材看。编译是验证这些设置的手段。Project » Compile PCB Project然后盯Messages面板。真正需要清掉的是这几类消息类型含义处理Net xxx has only one pin网络只连了一个引脚多半是作用域或标签拼写问题检查标签作用域、大小写Unknown Pin封装里找不到对应的焊盘编号回 3.1 核引脚编号Component xxx has no footprint元件未绑定封装用第 2 章的脚本清单逐个补Duplicate Designator位号重复Tools » Annotate Schematics重新编号编译干净了再去导 PCB这一步偷懒后面就得在 PCB 编辑器里一条条对着报错猜。3.3 把实例改成自己的最小系统改值、重编号、导 BOM真正让实例变成「自己的东西」是从改一个最小系统开始的。33 个实例里最适合当起点的通常是单片机最小系统或者线性电源这一类外围简单、失败成本低。改造流程我一般按这个顺序走复制整个工程文件夹重命名为自己的项目名原包保持不动当只读参考。修改核心器件型号同步改封装。型号变了封装大概率也要变别只改Comment不改Footprint。改电源部分。输入电压范围变了稳压器周边器件要重算尤其是反馈电阻和输入输出电容。重新编号。Tools » Annotate Schematics选「Reset All Designators」再「Update Changes List」让位号按从左到右、从上到下的顺序排一遍。编译、清 Messages、再导 PCB。重编号这一步很多人跳过觉得位号乱点无所谓。等 PCB 布局的时候你就知道难受了位号跳来跳去找一个电容要在板上扫半天。实例里原作者的编号顺序是按他自己的布局习惯来的你照搬没意义。改完之后导 BOMReports » Bill of Materials在面板里把需要的列勾上一般是Comment、Designator、Footprint、Quantity、LibRef然后Export成 CSV。导出的原始 BOM 是按位号一行一行排的同一个 100nF 电容可能出现二十行直接发给采购或者贴片厂对方还得自己合并一遍。3.4 导出的 BOM 先洗一遍再发出去原始 BOM 直接外发的后果轻则对方回问一句「这二十行是同一个料吗」重则贴片厂按行备料同一盘料买了二十次。我习惯用一段 Python 把它合并成「一个料号一行」的格式。import csv from collections import OrderedDict src bom_raw.csv # Altium 导出的原始 BOM dst bom_smt.csv # 给贴片厂/采购的合并版 groups OrderedDict() with open(src, newline, encodingutf-8-sig) as f: for row in csv.DictReader(f): comment (row.get(Comment) or ).strip() footprint (row.get(Footprint) or ).strip() refs (row.get(Designator) or ).strip() if not refs: # 跳过没有位号的行如机械件说明行 continue key (comment, footprint) # 同值不同封装不能合并 groups.setdefault(key, []).append(refs) with open(dst, w, newline, encodingutf-8-sig) as f: w csv.writer(f) w.writerow([序号, 元件值, 封装, 位号, 数量]) for i, ((comment, footprint), refs) in enumerate(groups.items(), 1): w.writerow([i, comment, footprint, ,.join(refs), len(refs)])几个参数值得说明。encodingutf-8-sig是为了让 Excel 打开不出现乱码去掉-sig在 Excel 里中文会变问号。合并键用(comment, footprint)而不是只用comment因为同样标着100nF的电容0603 和 0805 是两个料合并了就出事。DictReader的列名要和 Altium 导出的表头完全一致如果你在导出面板里改了列名这里也要跟着改。最后那个数量列是位号个数不是库存数采购拿去乘倍数就行。洗完之后BOM 从几十行变成十几行自己看一眼也知道这块板大概用了多少种料。4. 落到 PCB封装匹配、规则表和一次能过的 DRC从原理图Design » Update PCB Document开始工作重心就转移到物理约束上了。这一步最容易翻车的地方不是布线技术而是「图和板对不上」——封装缺失、焊盘编号错位、封装尺寸和实物差一圈。33 个实例里的 PCB 文件是有参考价值的但价值在于布局思路和规则设置不在于照抄走线。4.1 封装匹配Footprint Manager 里按三列排序导 PCB 之前必须先过Tools » Footprint Manager。这个面板把工程里所有元件的符号、封装、引脚映射列在一张表里比在原理图里一个个双击快得多。我的检查顺序是固定的先按Footprint列排序空值会集中在最上面。空的就是没绑封装对应第 2 章脚本列出来的那批逐个补。补的时候注意封装名要和封装库里的名字完全一致包括大小写和前缀。再按Current Footprint看有没有明显的「张冠李戴」。比如一个标着SOT-23的三极管配了个TO-92的封装这种在实例里偶尔会出现多半是原作者改型号没改封装。判断依据是引脚数SOT-23 是 3 脚但如果封装里是 3 个焊盘且间距 0.95mm那基本对得上间距 2.54mm 的那是直插。最后看引脚映射。双击某一行进Pin Mapping符号的 Pin 编号必须和封装的 Pad 编号一一对应。二极管的A/K对1/2、三极管的B/C/E对1/2/3这类映射错了板子做出来元件会反。有个简单办法验证在原理图里选中元件打开Tools » Cross Select Mode切到 PCB 看对应封装高亮的是不是同一个器件两侧来回点几次错位很明显。常用封装的尺寸心里要有数看到明显不符的立刻停下来核封装名实际尺寸长×宽典型用途04021.0 × 0.5 mm高密度数字板06031.6 × 0.8 mm通用阻容08052.0 × 1.25 mm电源、滤波SOT-232.9 × 1.3 mm小信号管、LDOSOP-84.9 × 3.9 mm间距 1.27 mm运放、存储QFP-487 × 7 mm间距 0.5 mm主控3D 模型也顺手看一眼。Place » 3D Body可以给封装挂模型实例里不一定都有但关键器件连接器、电解电容、大电感最好有因为高度冲突只有在 3D 视图里才看得出来。结构壳体的内腔高度是硬约束一个 10mm 高的电解电容放在 6mm 的腔体里画图阶段完全看不出来装的时候才发现。4.2 板框、叠层与设计规则把参数写成表板框我一般画在Mechanical 1层用直线或者圆弧闭合然后选中这些线Design » Board Shape » Define from selected objects生成板形。不要用 Keep-Out 层直接画板框Keep-Out 的语义是「禁止布线区」和板子外形的含义不是一回事混用会在后面加安装孔、开槽的时候出问题。叠层在Design » Layer Stack Manager里配。两层板是最常见的入门配置总厚 1.6mm铜厚 1oz约 35μm。四层板我一般按Top - GND - PWR - Bottom排地和电源放在中间两层信号走外层阻抗好控制回流路径也短。33 个实例里两层板居多四层板的那几个正好可以看看别人怎么分配电源层。设计规则是决定 DRC 能不能过的核心。Design » Rules里规则条目很多实际用得上的是下面这几条参数按常规板厂的加工能力给规则参数说明Electrical / Clearance6 mil0.15 mm通用间距高压段单独加规则Routing / Width信号 10 mil电源 20–30 mil电源线按电流放大Routing / Via Size孔径 0.3 mm外径 0.6 mm常规工艺再小要加钱Solder Mask / Expansion4 mil阻焊开窗余量Silkscreen / To Solder Mask8 mil丝印不许压焊盘Plane / Power Plane ConnectThermal Relief直连散热快但难焊规则设完不要急着布线先跑一次空 DRC看有没有规则冲突。有些实例自带的工程里残留了原作者定义的 Room 规则作用域指向一块不存在的区域DRC 会报一堆你找不到对象的 Clearance 错误。遇到这种情况在规则面板里按优先级从上往下看把没用的 Room 定义删掉问题立刻消失。4.3 布局与布线从实例里抄策略别抄走线布局这件事没有标准答案但有几条硬原则。电源入口的滤波和防护放在接口附近别让浪涌电流绕板一圈晶振贴着主控放下面铺地不铺信号去耦电容贴着电源引脚越近越好连接器位置先定因为它决定了板子在壳体内怎么装。33 个实例里那些电源类的板子布局思路基本都遵循这个逻辑可以对照着看。布线用P » T交互布线电源线先走、关键信号次之剩下的最后补。差分对用P » I等长用T » R做蛇形补偿。这些操作实例里不一定每个都用得上但电源板和数字板各看一个基本套路就清楚了。铺铜放在布线之后。P » G放置多边形铺铜网络选 GND勾上Remove Dead Copper删除死铜和Pour Over All Same Net Objects避让间距直接用规则里的 Clearance。铺完之后必须Tools » Polygon Pours » Repour All快捷键T » G » A。这一步经常被忘掉改了线不重新铺铜DRC 就按旧铜皮判断报出来的错误跟眼前看到的图对不上属于典型的「看着没问题但就是过不了」。铺铜还有一点两层板正反两面都铺地但要用足够的过孔把两面地连起来不然地平面被走线切碎回流路径绕远信号质量会打折。实例里的板子如果过孔打得密多半就是这个原因不是随手点的。4.4 DRC 报告怎么读先看短路再看间距Tools » Design Rule Check跑完之后会生成一份报告条目可能上百条。新手看到这份报告容易懵我一般按这个顺序读先看Short-Circuit这是硬错误两个不同网络连一起了必须清零。其次是Un-Routed Net有网络没布完也清零。再往下是Clearance这类错误数量最多但很多是误报或者可以接受的比如铺铜和焊盘的间距紧张实际板厂能做。最后是丝印类告警不影响电气性能但会影响可读性出图前顺手清掉。报告里的每条错误都带坐标和对象名双击能跳到 PCB 上的对应位置。有个技巧先在Design » Rules里把Clearance的Online DRC打开布线的时候实时就标红比事后一次性跑报告效率高得多。实例工程里这个开关有时是关的打开它。DRC 过完之后不要马上出图先做一次目视复核。缩放到全局看板子边缘有没有走线贴边、安装孔周围有没有铜皮、丝印有没有压住焊盘。机器检查不出来的问题人眼一遍就能发现。5. 避坑与排查实例跑不通时先查这五处这套资源用下来出问题的位置高度集中。下面五条是按我实际遇到的频率排的每条都按「现象 → 原因 → 解决」写遇到对应症状直接对号入座。5.1 打开与编译阶段的三个坑现象一打开工程弹窗提示文件版本比当前软件新文档打不开或者打开是空白。原因很明确资源是在更高大版本的 Altium Designer 里保存的文件格式向下不兼容。低版本软件读到高版本的文件头只能拒绝加载。解决办法按代价排优先换同代或更高版本的软件如果手头版本动不了新建一个空白.PrjPcb把SchDoc、PcbDoc和库文件用Add Existing to Project加进去工程文件本身只是索引重建不损失设计内容代价是编译设置和输出作业要重配。重建完立刻编译一次把 Messages 清干净。现象二编译提示大量Unknown Pin或者导 PCB 之后元件变成一堆绿色方块、一个焊盘都没连上。原因通常是三种之一元件根本没绑封装绑的封装在当前工程和已安装库里都找不到封装找到了但焊盘编号和符号引脚编号对不上。解决从Tools » Footprint Manager入手按Footprint列排序看空值再对每一行看Pin Mapping。如果封装名对但报 Unknown Pin双击封装进库编辑器对着符号的 Pin Designator 逐个核焊盘的 Designator改完保存、重新导 PCB。注意改库之后要把库重新编译一次Project » Compile Integrated Library不然 PCB 端读到的还是旧版本。现象三编译报Net xxx has only one pin但图上肉眼看着是连着的。原因基本锁定在网络标签的作用域上。同名Net Label放在两张不同的图纸里默认不连通Port和Sheet Entry名字差一个字母或者大小写不同也连不上。还有一种情况是标签和导线没真正搭上——标签的电气热点必须落在导线上差一点点看着像连了实际是悬空的。解决方法是把View » Electrical Grid打开看标签的连接点有没有吸附到线上然后按「单页用 Net Label、跨页用 Port、电源用 Power Port」的原则把混用的地方全部改过来重新编译。5.2 制板与输出阶段的两个坑现象四板厂反馈 Gerber 缺层或者钻孔文件和线路对不上。原因在输出配置。用File » Fabrication Outputs » Gerber Files手动一层层导很容易漏掉机械层或者阻焊层钻孔文件如果没单独用NC Drill Files导出Gerber 包里就是没有钻孔数据的。稳妥做法是用.OutJob统一管理输出。新建一个 Output Job 文件把 Gerber、NC Drill、BOM、坐标文件全部挂上去生成的时候一次性跑完避免漏项。参数上单位统一用毫米格式按板厂要求给常规是 4:4如果板厂指定 2:4就在 Gerber 设置里改别自己猜。打包前用 Gerber 查看器把各层叠起来看一遍重点看钻孔位置和焊盘是否重合。现象五丝印字符被裁掉、压到焊盘上或者板子上印出来一堆缺笔画的字。原因是丝印到阻焊的间距规则没设或者位号自动摆放时超出了板框。丝印压在焊盘上焊接的时候会被锡吃掉字符残缺不说还可能造成连锡。解决是在规则里加上Silkscreen to Solder Mask Clearance给 8 mil然后跑 DRC 里的丝印检查项。位号位置用Tools » Component Placement » Reposition Selected Components批量挪一遍挪完再目视扫一圈板边。有些板子空间紧张实在放不下就把位号缩小字号或者移到板外做丝印图别硬塞。6. 源码与硬件的对账让实例真正变成你自己的板子33 个实例里带源码的那几个是最容易被浪费的部分——很多人看完硬件就把源码扔在一边了。实际上源码和原理图的对应关系恰恰是验证「这块板我是不是真看懂了」的最好方式。对账的入口是引脚定义。打开源码里的引脚宏定义文件把每一条宏和原理图上的网络名一一对上/* board_pin.h —— 引脚宏与原理图网络名必须一一对应 */ #define LED1_PORT GPIOC #define LED1_PIN GPIO_PIN_13 /* 原理图网络LED1_CTRL */ #define KEY1_PORT GPIOA #define KEY1_PIN GPIO_PIN_0 /* 原理图网络KEY1_IN注意上拉电阻位置 */ #define UART1_TX GPIOA, GPIO_PIN_9 /* 原理图网络UART1_TX - 排针 J2-3 */对不上的地方往往就是坑。比如源码里按键配上拉、原理图上却把上拉电阻放在了另一端硬件能工作但电平逻辑是反的再比如串口 TX/RX 在原理图上交叉连接源码里却按同名宏配置接上线通不了。这些差异不改板子焊出来就是一块砖。我一般会把所有宏和网络名做成一张对照表逐行核对核完再烧程序。核对的时候重点看三处电源域的引脚配置有些引脚默认是模拟功能不配置就用不了、复用功能是否和原理图的外设一致、中断引脚有没有被别的外设占用。最后说个我自己的习惯。每拆完一个实例我会把它整理成一个「模板工程」原理图里的库路径改成相对路径、BOM 列固定、OutJob 配好、DRC 规则存成一套下次开新项目直接复制这个模板改比从空白工程一步步配快得多也不会漏掉规则。从那以后我每次拿到新的资源包都强制先走一遍「分诊 → 立骨架 → 编译 → 封装核对 → DRC → 出图」这条线哪怕只是看看也不跳过其中任何一步。希望帮到你。本文还有配套的精品资源点击获取