news 2026/10/6 5:58:38

Altium Designer中动态铺铜转静态Region实现阻焊开窗的完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Altium Designer中动态铺铜转静态Region实现阻焊开窗的完整指南

1. 从一块"不听话"的铜皮说起

画PCB的朋友大概率都遇到过这种场景:板子功能调试得差不多了,突然发现某个连接器、某个测试点、或者某个大功率器件的散热焊盘,需要在阻焊层上开一个特定形状的窗口,让锡膏能直接吃到铜面上,或者让结构件能直接压到裸铜上。这时候你打开阻焊层一看,发现那里正好铺着一大块动态铺铜(Polygon),而阻焊开窗的形状又跟这块铜皮的轮廓不完全一致——要么大一圈,要么小一圈,要么干脆是个异形。

新手的第一反应通常是:在阻焊层上直接画一个Region或者Fill不就行了?画是能画,但问题在于,动态铺铜在重新铺铜(Repour)之后,边界会跟着规则变化,而你在阻焊层上画的图形是死的,两者一旦对不上,开窗就会偏。更麻烦的是,有些板厂的工程审核会检查阻焊开窗与铜皮的关系,如果开窗区域超出了铜皮边界,或者开窗形状与铜皮轮廓差异过大,轻则被EQ问询,重则直接按最小开窗处理,你的设计意图就废了。

所以真正稳妥的做法是:把动态铺铜Polygon转换成静态的Region,然后把这个Region放到阻焊层上作为开窗图形。这样做的好处是,Region是静态的、可精确编辑的,它的形状完全由你控制,不受铺铜规则和Repour的影响;同时,由于它来源于原来的Polygon,形状天然与铜皮一致,开窗精度有保证。

这个操作在Altium Designer(后面统一叫AD)里并不复杂,但里面有几个关键细节,如果没注意到,转换出来的Region要么位置偏了,要么层放错了,要么把铜皮本身给删了。我前后踩过三四次坑,才把这套流程理顺。下面就把整个思路、操作步骤、参数设置和避坑经验完整地拆一遍,不管你是刚接触AD的新手,还是画了几年板子的老手,都能直接照着复现。

2. 为什么非得用Region,直接画开窗不行吗

2.1 动态铺铜和静态Region的本质区别

先把这个核心概念说清楚,不然后面的操作逻辑你理解不了。

AD里的Polygon(铺铜)是动态的,它依附于网络、依附于规则。你画一个Polygon,指定它连到GND,然后Repour,AD会根据当前的安全间距规则、铜皮连接方式(热焊盘还是直连)、以及周围走线和焊盘的分布,自动计算出铜皮的实际填充形状。也就是说,Polygon的"最终形状"是AD算出来的,不是你画出来的。你画的只是它的外轮廓,内部填充是动态生成的。

而Region(区域)是静态的,它就是一个多边形填充,画成什么样就是什么样,不依附于任何网络,不参与规则检查中的铺铜重算。你可以把它理解成一块"死"的铜皮,或者一块"死"的阻焊开窗。

这两者的差异决定了:如果你直接在阻焊层上画一个Region来做开窗,形状是你手画的,跟铜皮轮廓没有必然联系;但如果你把Polygon转成Region,再把这个Region放到阻焊层,那开窗形状就完全等于铜皮形状,精度和一致性都有保障。

2.2 阻焊开窗的常见需求场景

阻焊开窗不是随便开的,通常有这么几类需求:

  • 焊接开窗:比如连接器的接地焊盘、大电流走线的加锡区域,需要阻焊开窗让锡能直接吃到铜上,增加载流能力或焊接强度。
  • 散热开窗:功率器件底部的散热焊盘,有时候需要开窗让导热硅脂或结构件直接接触铜面,提高散热效率。
  • 测试点开窗:测试点如果被阻焊盖住,探针就扎不到铜,必须开窗露铜。
  • 结构避让开窗:某些结构件(比如屏蔽罩、金属支架)需要直接压在裸铜上做接地,这时候开窗形状要跟结构件接触面匹配。
  • 异形开窗:有些射频器件或者传感器需要特定形状的露铜区域,不是简单的矩形或圆形。

这些场景里,如果开窗区域正好落在一块动态铺铜上,那用Polygon转Region的方法就是最优解。

2.3 直接画Region开窗的三大坑

我最早就是直接在阻焊层上画Region,结果踩了三个坑:

第一个坑:形状对不上。手画的Region跟铜皮轮廓总有偏差,尤其是异形铜皮,你根本画不准。板厂工程审核的时候一看,开窗比铜皮大了一圈,直接问你"是否确认开窗超出铜面",你还得解释半天。

第二个坑:Repour之后铜皮变了。动态铺铜在后续修改走线或调整规则后,Repour一下形状就变了,但你阻焊层的Region没变,结果开窗位置偏了。这种问题在后期改板的时候特别容易出,而且不容易发现。

第三个坑:层放错。AD的层管理有时候会让人迷糊,尤其是从其他层复制粘贴的时候,一不小心就把Region放到了信号层而不是阻焊层,或者放到了阻焊层但没设置正确的极性(Top Solder还是Bottom Solder)。这种错误在3D视图里看不出来,只有出Gerber的时候才会暴露。

所以,用Polygon转Region的方法,本质上是用"形状来源可靠"来解决第一个坑,用"静态Region不参与Repour"来解决第二个坑,用"明确的层转换操作"来解决第三个坑。

3. 核心操作:Polygon转Region的完整流程

3.1 前置检查:确认Polygon的状态

在动手转换之前,先做三件事:

第一,确认目标Polygon已经Repour到最终状态。因为转换之后Region的形状就固定了,如果Polygon还没铺到最终形状,转出来的Region也是错的。操作方法是:Tools菜单里找到Polygon Pours,先Repour All,或者对着目标Polygon右键Repour。确认铜皮形状符合预期。

第二,确认目标Polygon的网络属性。转换后的Region会继承Polygon的网络属性(如果有的话),但放到阻焊层之后,网络属性其实就不重要了,因为阻焊层不参与电气连接。不过为了后续管理方便,建议还是记一下原来的网络名。

第三,确认目标Polygon的层。通常Polygon是在Top Layer或Bottom Layer,转换后的Region默认也会在同一个层。但我们的目标是要把它放到阻焊层(Top Solder或Bottom Solder),所以转换之后还需要改层。这一点后面会详细说。

3.2 关键步骤:用Create Region from Polygon

AD里把Polygon转成Region,最直接的方法是使用Tools菜单下的Convert功能。具体路径是:

Tools -> Convert -> Create Region from Polygon

注意,这个菜单项只有在选中了一个Polygon的情况下才会激活。如果你选中的是其他对象(比如走线、焊盘、Fill),这个选项是灰的。

操作步骤:

  1. 在PCB编辑器中,单击选中目标Polygon。选中的标志是Polygon边缘出现控制点,并且属性面板里显示的是Polygon属性。
  2. 打开Tools菜单,找到Convert子菜单,点击Create Region from Polygon。
  3. AD会弹出一个确认对话框,提示你"转换后原Polygon将被删除,是否继续"。这里要注意:转换是不可逆的,原Polygon会被删除,取而代之的是一个Region。如果你还想保留原Polygon,建议先复制一份备份。
  4. 点击Yes确认,转换完成。此时原来Polygon的位置会出现一个Region,形状与Polygon的填充形状完全一致。

这里有一个细节:转换出来的Region,它的形状是Polygon的实际填充形状,而不是Polygon的外轮廓。也就是说,如果Polygon内部有避让走线的空洞,转换后的Region也会包含这些空洞。这一点非常重要,因为阻焊开窗通常不需要避让走线,如果Region带了空洞,开窗就会不完整。

3.3 处理转换后的空洞问题

如果你发现转换后的Region内部有空洞(通常是因为Polygon避让了某些走线或焊盘),有两种处理方式:

方式一:手动编辑Region顶点。选中Region,在属性面板里找到Vertices(顶点)编辑,手动删除空洞的顶点,把Region变成一个实心多边形。这种方式适合空洞比较少、形状比较简单的情况。

方式二:用Union操作合并。如果空洞很多,手动删顶点太累,可以先把Region复制一份,然后用Place -> Region重新画一个覆盖整个区域的大Region,再用Tools -> Convert -> Create Union把两个Region合并。不过这种方式操作起来也不轻松。

方式三:回到Polygon阶段处理。更聪明的做法是,在转换之前,先把Polygon的避让规则改一下,让它不避让那些不需要避让的对象。比如,如果Polygon避让了某条走线,但阻焊开窗不需要避让,那就在Polygon属性里把该走线的避让去掉,Repour之后再转换。这样转换出来的Region就是实心的。

我个人的经验是,尽量在Polygon阶段把形状调好,再转换,因为Region的顶点编辑远不如Polygon灵活。

3.4 把Region放到阻焊层

转换完成后,Region还在原来的信号层(比如Top Layer)。接下来要把它放到阻焊层:

  1. 选中转换后的Region。
  2. 在属性面板里找到Layer下拉框,把层从Top Layer改为Top Solder(如果是底层就改为Bottom Solder)。
  3. 确认Region的极性设置。在AD里,阻焊层的Region默认是"开窗"(即负片显示,有Region的地方就是开窗区域)。如果你发现3D视图里开窗区域反了,检查一下Region的属性里是否有"Negative"之类的选项。

这里有一个容易忽略的点:阻焊层的Region不需要网络属性。转换后的Region可能还带着原来的网络名,放到阻焊层之后,建议把网络属性清空,避免后续DRC报错。

4. 参数设置与精度控制

4.1 阻焊开窗的尺寸补偿

阻焊开窗通常要比铜皮实际区域大一点,这个"大一点"的量叫开窗补偿(Solder Mask Expansion)。在AD里,这个补偿通常是在焊盘属性里设置的,但对于Region形式的开窗,你需要手动控制Region的尺寸。

常见的补偿值是0.05mm到0.1mm(单边),具体取决于板厂的工艺能力。如果你的板厂支持更小的阻焊桥,补偿可以小一点;如果板厂工艺一般,补偿就要大一点,避免阻焊残留。

操作方法是:选中阻焊层的Region,在属性面板里找到Vertices编辑,或者用快捷键M -> S(Move Selection)来整体缩放Region。不过AD的Region缩放功能不太好用,更精确的做法是手动调整顶点坐标。

4.2 Region的顶点精度设置

AD的PCB编辑器有网格设置(Grid),Region的顶点会吸附到网格上。为了保证开窗精度,建议在编辑Region顶点之前,把网格设小一点,比如0.01mm或者1mil。操作路径是:View -> Grids -> Set Global Snap Grid,或者用快捷键G快速切换。

提示:网格设得太小会导致顶点难以对齐,设得太大又会影响精度。我的习惯是,在画Region的时候用0.1mm网格,在微调顶点的时候切到0.01mm网格。

4.3 层叠与Gerber输出验证

Region放到阻焊层之后,一定要在Gerber输出里验证一下。操作步骤:

  1. 打开File -> Fabrication Outputs -> Gerber Files。
  2. 在Layers选项卡里,确认Top Solder和Bottom Solder层被勾选。
  3. 生成Gerber后,用Gerber查看器(比如CAM350或者AD自带的Gerber Viewer)打开,确认阻焊开窗的形状和位置正确。
  4. 特别要注意:阻焊层在Gerber里通常是负片,也就是说,有Region的地方在Gerber里是"空"的(表示开窗),没有Region的地方是"实"的(表示盖阻焊)。如果你看到的结果反了,说明Region的极性设置有问题。

5. 常见问题与排查技巧实录

5.1 转换后Region不见了

现象:点击Create Region from Polygon之后,原Polygon消失了,但Region也没看到。

原因:Region可能被放到了其他层,或者被其他对象遮挡了。AD在转换时,Region默认会放在原Polygon所在的层,但如果原Polygon是在内层(比如Internal Plane),转换后的Region可能被放到了内层,而当前视图只显示了顶层和底层。

解决:打开View -> Panels -> PCB,在Layers区域里把所有层都打开,或者用快捷键L打开层设置,确认Region所在的层是否可见。另外,可以用Edit -> Find Similar Objects来搜索Region对象,快速定位。

5.2 转换后Region形状不对

现象:转换后的Region形状跟Polygon的填充形状不一致,比如少了某一块,或者多了某个凸起。

原因:通常是因为Polygon在转换时还没有Repour到最终状态,或者Polygon内部有复杂的避让关系,转换时AD没有正确处理。

解决:先撤销转换(Ctrl+Z),然后对Polygon执行Repour All,确认形状正确后再重新转换。如果问题依旧,尝试把Polygon的避让规则简化,或者手动编辑Polygon的顶点,把复杂形状拆成多个简单Polygon分别转换。

5.3 阻焊开窗在3D视图里看不到

现象:Region已经放到阻焊层了,但在3D视图里看不到开窗效果。

原因:AD的3D视图默认可能不显示阻焊层的开窗效果,或者需要手动开启。

解决:在3D视图里,按快捷键L打开View Configuration,在General Settings里确认"Show Solder Mask"之类的选项被勾选。另外,3D视图的显示效果跟显卡驱动有关,如果一直看不到,可以尝试切换到2D视图,用Gerber预览来验证。

5.4 DRC报错"Region on Solder Mask"

现象:Region放到阻焊层后,DRC检查报错,提示阻焊层上有Region。

原因:AD的DRC规则里,默认可能不允许在阻焊层上放置Region,或者Region的网络属性与规则冲突。

解决:在Design -> Rules -> Manufacturing里,找到Solder Mask Expansion相关的规则,确认是否有限制。另外,把Region的网络属性清空,避免与电气规则冲突。如果DRC仍然报错,可以在规则里添加一个例外,允许阻焊层上的Region。

5.5 常见问题速查表

问题现象可能原因解决方法
转换后Region不见了Region被放到其他层或被遮挡打开所有层显示,用Find Similar Objects定位
Region形状不对Polygon未Repour到最终状态先Repour All,再重新转换
3D视图看不到开窗3D显示设置未开启检查View Configuration里的Solder Mask选项
DRC报错规则限制或网络属性冲突清空网络属性,调整Manufacturing规则
Gerber里开窗反了Region极性设置错误检查Region属性里的Negative选项
开窗尺寸偏小未做补偿手动调整Region顶点,单边补偿0.05-0.1mm

6. 进阶技巧:批量转换与脚本自动化

6.1 批量转换多个Polygon

如果你板子上有多个Polygon需要转成阻焊开窗,一个一个手动转效率太低。AD支持批量操作:

  1. 按住Shift键,依次选中所有目标Polygon。
  2. 打开Tools -> Convert -> Create Region from Polygon。
  3. AD会依次转换每个Polygon,但注意,转换后的Region会分散在原Polygon所在的层,需要手动逐个改层。

如果Polygon数量很多,建议写一个简单的脚本来自动化。AD支持DelphiScript和VBScript,可以遍历所有选中的Polygon,执行转换并自动改层。

6.2 用脚本自动改层

下面是一个简单的DelphiScript示例,功能是把选中的Region从当前层移到Top Solder层:

Procedure MoveSelectedRegionsToTopSolder; Var Board : IPCB_Board; Region : IPCB_Region; Iterator : IPCB_GroupIterator; Begin Board := PCBServer.GetCurrentPCBBoard; If Board = Nil Then Exit; Iterator := Board.GroupIterator_Create; Iterator.AddFilter_ObjectSet(MkSet(eRegionObject)); Region := Iterator.FirstPCBObject; While Region <> Nil Do Begin If Region.Selected Then Begin Region.Layer := eTopSolderLayer; End; Region := Iterator.NextPCBObject; End; Board.GroupIterator_Destroy(Iterator); Board.ViewManager_FullUpdate; End;

这个脚本的逻辑很简单:遍历当前PCB上所有选中的Region,把它们的层设置为Top Solder。你可以根据需要改成Bottom Solder,或者加上尺寸补偿的逻辑。

注意:AD的脚本编辑器在DXP -> Run Script里打开,脚本文件后缀是.pas(DelphiScript)或.vbs(VBScript)。运行脚本之前,建议先保存PCB文件,避免意外修改无法撤销。

6.3 用Union合并多个Region

如果多个Region需要合并成一个大的开窗区域,可以用Tools -> Convert -> Create Union from Selected Objects。这个功能会把选中的多个Region合并成一个Union,Union在Gerber输出时会被当作一个整体处理。

不过要注意,Union合并后的形状是各个Region的并集,如果Region之间有重叠,合并后重叠部分不会重复计算。这个特性在制作复杂开窗形状时很有用。

7. 实操心得与避坑清单

7.1 转换前一定要备份

Create Region from Polygon是不可逆操作,原Polygon会被删除。如果你对转换结果不满意,想回到Polygon状态,只能撤销(Ctrl+Z),但如果撤销栈已经满了,或者你保存了文件,那就回不去了。所以我的习惯是,在转换之前,先把PCB文件另存一份,或者把目标Polygon复制一份放到旁边作为备份。

7.2 注意Polygon的网络属性

转换后的Region会继承Polygon的网络属性。如果原Polygon是GND网络,转换后的Region也会是GND网络。放到阻焊层之后,这个网络属性其实没有电气意义,但可能会导致DRC报错。建议在改层的同时,把网络属性清空。

7.3 阻焊开窗的补偿要适度

补偿太小,板厂可能因为工艺偏差导致阻焊残留,开窗不完整;补偿太大,可能导致相邻开窗之间的阻焊桥太窄,甚至断桥。一般来说,0.05mm到0.1mm的单边补偿是比较安全的范围。如果你的板子密度很高,阻焊桥很窄,建议跟板厂确认一下他们的最小阻焊桥宽度。

7.4 Gerber输出前一定要预览

Gerber输出是最后一道关,一定要用Gerber查看器预览阻焊层的开窗效果。重点检查:开窗位置是否正确、开窗形状是否与铜皮一致、开窗尺寸是否合适、相邻开窗之间是否有足够的阻焊桥。

7.5 3D视图是辅助,不是最终依据

AD的3D视图可以直观地看到开窗效果,但3D视图的渲染跟实际Gerber可能有差异,尤其是阻焊层的显示。所以3D视图只能作为辅助验证,最终还是要以Gerber预览为准。

7.6 避坑清单

  • 转换前先Repour All,确保Polygon形状正确。
  • 转换前备份PCB文件,防止不可逆操作。
  • 转换后检查Region是否有空洞,必要时手动编辑。
  • 改层时确认是Top Solder还是Bottom Solder,别搞反。
  • 清空Region的网络属性,避免DRC报错。
  • 做尺寸补偿,单边0.05-0.1mm。
  • Gerber输出后一定要预览,确认开窗效果。
  • 3D视图只能辅助,不能替代Gerber验证。

8. 一个实际案例:大电流连接器开窗

前段时间做了一个电机驱动板,上面有一个大电流连接器,每个引脚需要过10A电流。连接器的焊盘是通孔焊盘,但为了增加载流能力,我在焊盘周围铺了一块Polygon,连到电源网络,然后在阻焊层上开了窗,让锡能直接吃到铜皮上。

具体操作流程:

  1. 在Top Layer上画了一个Polygon,覆盖连接器所有引脚周围的区域,网络设为VCC。
  2. Repour All,确认Polygon填充形状正确,没有避让异常。
  3. 选中Polygon,执行Tools -> Convert -> Create Region from Polygon。
  4. 把转换后的Region层改为Top Solder。
  5. 清空Region的网络属性。
  6. 手动调整Region顶点,单边外扩0.08mm作为开窗补偿。
  7. 生成Gerber,用CAM350预览,确认开窗形状和位置正确。
  8. 发给板厂,备注"阻焊开窗区域需露铜,建议采用沉金工艺"。

板厂反馈说开窗形状很规整,没有EQ问询,一次通过。这个案例说明,用Polygon转Region的方法做阻焊开窗,精度和一致性都比手画Region好得多,尤其是对于形状复杂或者需要与铜皮精确对齐的开窗区域。

9. 与其他EDA工具的对比

虽然这篇主要讲AD,但顺便提一下其他工具里的类似操作,方便大家迁移经验。

KiCad里没有直接的Polygon转Region功能,但可以通过"Convert to Zone"或者手动绘制F.Mask层的图形来实现类似效果。KiCad的Zone是动态的,但F.Mask层的图形是静态的,逻辑跟AD类似。

Cadence Allegro里,动态铺铜叫Shape,静态铺铜叫Static Shape。Allegro支持把动态Shape转成静态Shape,然后可以把静态Shape放到阻焊层(Solder Mask层)。操作路径是Shape -> Change Shape Type,然后手动改层。

PADS里,铺铜叫Copper Pour,阻焊开窗通常用Copper或者2D Line在Solder Mask层绘制。PADS没有直接的转换功能,需要手动描边。

总的来说,AD的Polygon转Region功能在易用性和精度上都是比较优秀的,尤其是对于需要精确对齐铜皮的开窗场景。

10. 最后分享几个小技巧

第一个技巧:如果你经常需要做Polygon转Region的操作,可以把Tools -> Convert -> Create Region from Polygon这个菜单项添加到自定义工具栏里,省得每次翻菜单。AD支持自定义工具栏,在View -> Toolbars -> Customize里可以拖拽菜单项到工具栏。

第二个技巧:转换后的Region,如果形状比较复杂,可以用Tools -> Convert -> Create Region from Selected Primitives来进一步编辑。这个功能可以把多个选中的图元(比如Line、Arc)合并成一个Region,适合手动绘制异形开窗。

第三个技巧:在Gerber输出时,可以单独输出阻焊层的预览图,发给板厂确认。AD支持在Gerber Setup里选择"Preview"模式,生成一个PDF或者图片格式的预览,比Gerber文件更直观。

第四个技巧:如果你用的是AD 21或更高版本,阻焊层的Region支持"Smart Mask"功能,可以自动根据铜皮形状生成开窗,不需要手动转换。不过这个功能对复杂形状的支持还不够完美,我一般还是用手动转换的方法。

第五个技巧:在团队协作中,建议把Polygon转Region的操作步骤写成文档,统一规范。因为不同人画板子的习惯不同,有的人喜欢直接画Region,有的人喜欢用Polygon转,如果不统一,后期改板的时候容易乱。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/6 5:58:22

持续工作AI:从对话工具到常驻数字助理的工程实践

DevDay 2026 最让我提神的&#xff0c;不是又发布了一个刷榜模型&#xff0c;而是那句“把持续工作的 AI 装进 ChatGPT”。如果你跟我一样&#xff0c;过去两年一直在手动把 AI 生成的草稿复制来复制去、隔几个小时就去问一句“上次那个任务到底做完没”&#xff0c;那这个方向…

作者头像 李华
网站建设 2026/10/6 5:58:22

智能体落地难?五种路径搞定工作流、RAG与权限治理

智能体这波热度&#xff0c;说实话是我这几年在企业服务里见过最大的一波。客户开口闭口要上智能体&#xff0c;但真到立项评审的时候&#xff0c;几乎都会卡住&#xff1a;技术方案怎么定、知识库怎么建、权限怎么切、出事了怎么追溯。我在过去一年里陪不同行业的客户踩过这些…

作者头像 李华
网站建设 2026/10/6 5:57:27

工业软件AI落地指南:从画图纸到会思考的进阶路径

这两年我被工业制造企业问得最多的一个问题是&#xff1a;工业软件到底怎么和AI结合&#xff1f;前年大家还在看AI写代码、画图&#xff0c;到了今年&#xff0c;研发主管们普遍开始问更具体的问题——我们的CAD能不能自动出方案&#xff1f;仿真能不能少跑几轮&#xff1f;图纸…

作者头像 李华
网站建设 2026/10/6 5:57:08

谢希仁计算机网络PPT课件:复习方法论与PPT转PDF、高清图片实操

简介&#xff1a;谢希仁《计算机网络》完整版课件共1173页&#xff0c;以PPT形式系统呈现教材核心内容&#xff0c;覆盖第1章概述、因特网发展三阶段、网络的网络、ISP三级结构、计算机网络的类别与性能指标&#xff0c;以及五层协议体系结构与TCP/IP模型等模块&#xff0c;适合…

作者头像 李华
网站建设 2026/10/6 5:57:08

AI驱动的UI工作流重构:从拼界面到定义体验

1. 这不是偷懒&#xff0c;是工作流的彻底重构“自从有了 AI&#xff0c;我就再也不想拼 UI 了……”——这句话在设计群、前端茶水间和产品晨会上反复刷屏&#xff0c;不是段子&#xff0c;是真实发生的生产力断层。我做交互设计和前端开发整十二年&#xff0c;从手绘线框图、…

作者头像 李华
网站建设 2026/10/6 5:55:18

ESP32-P4+C5双芯架构:屏即网关的硬件级实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华