简介:一套面向 Altium Designer 用户的常用元件与 PCB 封装库合集,适合硬件工程师、PCB 布板人员和 STM32 嵌入式开发者快速搭建个人元件库。内容覆盖开关、按键、排针、标准芯片封装、电容电阻、MCU、模拟/数字符号、二极管、继电器、数码管、场效应管等众多常见类别,可大幅减少逐一建库的重复工作,基本满足中小型电子项目常规设计需求。包体共540个文件,以223个PCBLib封装库和220个SCHLib原理图库为主体,另有17个LibPkg集成库、19个SCHDoc原理图和4个DDB数据库,整体约44.34MB,目录按常用零件封装库与原理图库分类,调用方便。资源同步提供ST原厂STM32评估板原理图和PCB参考设计,可作为STM32项目引脚规划、封装选型及布局布线的设计蓝本。已有489人学习下载,适合需要快速补齐元件库、参考官方评估板设计并提升板级开发效率的工程师。
1. 拿到 STM32 封装库后先别画:三件事决定后面翻不翻车
很多人在给 STM32 平台画第一版 PCB 时,都以为最费时间的环节是原理图连线或者布局布线,我一开始也是这么想的。直到一次备赛时,我把一个常见的 MCU 封装拖进画布,网络标号连得整整齐齐,打样回来却发现焊盘和实际芯片引脚对不上,芯片根本没法焊上去。问题根源不在布线,而在封装库本身。这套经典的 AD 元件与 PCB 封装库大全,就是帮你把这类“从零建库”的隐性成本一次性砍掉的资源:里面有整理好的原理图符号库、PCB 封装库和集成库,覆盖常用接插件、分立器件以及一批 STM32 常用芯片封装。但拿到手先别急着画,得先想清楚三件事:库文件怎么装、芯片引脚怎么核对、封装参数怎么验收。这三件事做对了,后面画板、布线、打样都能少走一半弯路。适合正在做 STM32 平台的硬件新手,也适合想整理自己底库的开发者参考。
2. 先把库拆开:SchLib 与 PcbLib 的对应规则,和 3D 模型丢在哪
2.1 三类库文件到底各管什么
这套封装库大全在硬盘里解压之后,你通常会看到一堆后缀不同的文件。AD 环境下遇到的库文件大致有三种:原理图符号库、PCB 封装库、集成库。很多人以为集成库是“终极版本”,只加载它就够了,实际上这是个误区。
原理图符号库负责的是“逻辑表达”:它描述一个元件有哪些引脚、引脚名是什么、引脚号是多少、电气类型是输入还是输出。你在画原理图时放置的那个矩形或者芯片图形,就是从符号库里调出来的。它不关心焊盘尺寸、不关心器件物理尺寸,甚至不关心引脚实际间距。
PCB 封装库负责的是“物理落地”:焊盘编号、焊盘尺寸、焊盘间距、丝印边框、阻焊开窗、3D 模型关联,全部都在封装库里定义。PCB 上放置的每个器件,本质上就是引用了一个封装。封装里的焊盘编号必须和原理图符号里的引脚编号一一对应,否则就会出现“原理图连对了,PCB 上飞线乱飞”的情况。
集成库就是把两者打包成一个文件的成品,同时还能把 3D 模型、仿真模型一起塞进去。好处是分发方便,一个文件拖过去就能用;坏处是打包之后很难直接修改,而且 3D 模型经常是外部路径引用,容易丢。因此我的习惯是:拿到这类大全包之后,先在硬盘里建一个“原始备份”目录,把解压出来的东西原封不动放好,再复制一份工作副本到当前工程目录,所有后续操作都只动工作副本。
2.2 一份合格的封装库大全通常包含什么
“大全”两个字听起来很虚,但打开目录之后基本能看出门道。我拆过几份类似的库包,比较常见的内容组织方式是按器件类别分目录:分立器件、电源芯片、连接器、逻辑芯片、MCU 封装、接插件等。每种目录下又有多个封装变体,比如同一颗器件同时提供 SOIC、TSSOP、QFN 几种封装,方便不同设计阶段的选择。
对 STM32 平台来说,最值得优先看的是 LQFP 和 QFN 两族封装。LQFP 是四边引脚贴片封装,引脚间距常见 0.5mm 或 0.8mm,焊接时用普通回流焊工艺就能处理;QFN 则底部有一个大的散热焊盘,四周是扁平焊盘,对钢网开窗和过孔规划要求更高。这两种封装在库里的命名往往有规律可循,但每个发布者的规则并不统一,不能假设名字和数据手册完全一致。
另外,好的库包会额外附带 3D 模型文件,常见格式是 step 或 wrl。step 模型能带进 PCB 的三维视图,检查器件高度冲突时非常有用。但注意,3D 模型在集成库里只是一个“引用路径”,模型文件本身通常不打包进集成库。很多人把库包整个拷进 U 盘、换个电脑打开工程,3D 模型就全不见了,原因就在这。这不代表库坏了,只要把 step 文件复制到工程目录下、重新关联一次路径就能恢复。
2.3 加载库的两种方式和一次加载失败教训
进入 AD 环境后,把库加载到工程里有两条路径。第一种是用库面板直接“安装”集成库文件,AD 会把它加入全局库列表,任何工程都能调用。第二种是把源库复制到当前工程文件夹下,再通过“工程选项 → 库搜索路径”指定相对路径。两种方式都能用,但后续维护成本差很多。
我一般推荐第二种。原因很实际:直接安装集成库,库文件的绝对路径被写死在 AD 配置里,一旦你从网盘整包解压到新电脑,或者把工程连同一个库目录挪个位置,AD 经常会报告“在数据库中发现 0 个匹配项”。这不是库损坏,而是路径失效了。把源库放进工程目录、用相对路径管理,整个工程目录拷给任何人,打开后都能正常找到库文件。
有一次我帮同事排查一个工程,原理图里所有电阻电容都显示为问号,一问才知道他是直接从旧电脑的 C 盘路径加载的集成库,工程拷到新电脑后库文件没跟过来。解决方式也很简单:把集成库提取成源库(库面板右键 → “提取”),再把提取出来的 SchLib 和 PcbLib 放进工程目录,重新安装一次,器件图形和封装就全部回来了。这里也提醒一句:AD 的“提取源库”并不是把集成库拆开那么简单,提取之后生成的库文件是独立的,原来对集成库的引用并不会自动更新,需要手动重新关联。
3. 把 STM32 芯片拖进画布:引脚映射核对、封装绑定与替换操作
3.1 从大库中挑出目标芯片:先数引脚,再信名字
库面板里搜关键词,可能会跳出来好几个名字相似的结果。STM32 这类芯片的命名规则里通常包含系列名、封装脚数、Flash 容量、后缀温度等级等,但不同库包的命名习惯千差万别。比如同一个小封装芯片,A 库可能叫“STM32 系列 48 脚”,B 库写全了型号后缀,C 库干脆把 64 脚和 48 脚做成两个条目但名字几乎一样。光看名字很难分辨。
我的做法是先不急着放置,把候选器件在库面板里右键打开属性,看看引脚总数。引脚总数这一项经常能暴露问题:有些劣质库把 64 脚封装的符号误画成 48 脚,虽然名字写着 48,但引脚列表里多出一堆不存在的脚。还有一种是封装里焊盘数量正确,但原理图符号的引脚号从 1 到 64 排列时,中间某几个脚被漏掉或重复编写。这些靠眼睛扫一遍属性面板就能发现。
如果库面板里没有引脚总数这个显示项,还有一个笨办法:直接把候选器件拖进原理图,然后选中器件打开“引脚”面板,从头到尾数一遍。这个过程看着费时间,但对比后期打样回来芯片焊不上,这点时间成本低到可以忽略。尤其是第一次用某个库包时,我建议把它当作固定检查流程,而不是觉得“芯片这么常见,库肯定没问题”。
3.2 对照数据手册逐脚核对:物理引脚号不等于 GPIO 编号
STM32 在原理图里呈现的引脚名是 PA0、PA1、PB3 这类 GPIO 编号,但芯片封装上的物理引脚是 1、2、3 这种数字编号。原理图符号里的“引脚编号”字段,填的必须是物理引脚号;而“引脚名”字段才对应数据手册里的引脚功能名或 GPIO 编号。这两个字段一旦错位,原理图连线看着没问题,导入 PCB 后网络就全乱了。
以常见的小封装 MCU 为例,LQFP-48 封装里必须要重点核对几个容易被搞错的引脚:BOOT0 启动脚、NRST 复位脚、OSC_IN 和 OSC_OUT 晶振脚、VDDA 模拟供电脚、VREF+ 参考电压脚,还有 VCAP 内核滤波电容脚。这些脚在原理图里往往没有接入总线,只是单独拉线,所以错了也不容易在视觉上暴露。整理一个最小核对表的话是这样的:
引脚号 | 引脚名 | 为什么容易错 1 | VBAT | 和 VDDA 混淆 14 | PB2/BOOT1 | 启动配置相关,容易漏接上拉电阻 44 | OSC_IN/PF0 | 复用功能多,库里可能标成 PF0 或 PD0 45 | OSC_OUT/PF1 | 同上,注意与 44 脚配对关系 7 | BOOT0 | 启动选择脚,许多库漏掉内部下拉选项 48 | NRST | 复位脚,库里容易标成普通 GPIO
对照方法很简单:打开数据手册的引脚定义表,和原理图符号编辑器的引脚列表并排,从 1 号脚开始逐脚扫到尾。注意,绝对不能只检查首尾十几个脚,错位经常发生在中段。很多自动生成的库是按模块排列引脚,而不是按物理编号排列,一旦中间的移位没对齐,后面所有脚都会跟着错位。用脚本辅助检查更快,我写过一个小工具做这件事。
3.3 用脚本批量核对引脚映射,省掉逐行目测
如果只是核对一颗芯片,手动对照完全够用。但封装库大全里涉及的芯片可能有几十上百颗,每颗都手动对一遍,效率太低。我一般会先用 AD 自带的报告功能把原理图库的引脚表导成 CSV,再用一段 Python 脚本和数据手册整理出的 CSV 做差异比对。脚本逻辑非常简单,核心就是把两列数据按引脚号对齐并输出不一致的项。
# pin_map_check.py:原理图符号引脚 vs 数据手册引脚 差异核对 import csv def load_pin_map(csv_path, pin_col, name_col): """从 CSV 中读取引脚映射表,返回 {引脚号: 引脚名}""" pin_map = {} with open(csv_path, newline='', encoding='utf-8') as f: reader = csv.DictReader(f) for row in reader: pin_no = row[pin_col].strip() pin_name = row[name_col].strip() # 同引脚号出现多次时,只保留最后一个,并在后续比对时发现重复 pin_map[pin_no] = pin_name return pin_map def compare_pin_maps(reference, library): """比对引脚编号一致性,返回差异列表""" diffs = [] all_pins = sorted(set(reference.keys()) | set(library.keys())) for pin in all_pins: ref_name = reference.get(pin, '<缺失>') lib_name = library.get(pin, '<缺失>') if ref_name != lib_name: diffs.append((pin, ref_name, lib_name)) return diffs if __name__ == '__main__': ref = load_pin_map('stm32_reference.csv', '引脚号', '引脚名') lib = load_pin_map('library_export.csv', 'Designator', 'Name') for pin, ref_name, lib_name in compare_pin_maps(ref, lib): print(f'引脚 {pin}: 手册={ref_name}, 库里={lib_name}')这段脚本的核心逻辑很简单:构建两个字典,键是引脚号,值是引脚名,然后按引脚号做全量比对。输出里看到“手册=OSC_IN,库里=PF0”这类结果时,就要意识到库里把复用功能名直接写成了 GPIO 名字,这不算严格错误,但会导致原理图阅读时产生误导,建议手动改成数据手册的标准写法。还有一种更隐蔽的差异是引脚号错位:手册里 44 脚是 OSC_IN,库里 44 脚却是 NRST,这种结果会直接打印出来。
脚本有一个前提:AD 导出的 CSV 和手工整理的数据手册 CSV,列名必须对应上。AD 的引脚报告通常用 Designator 表示引脚号、Name 表示引脚名,数据手册整理的表用“引脚号”“引脚名”做表头。如果手动整理的数据量小,直接把 CSV 表头对齐就行,脚本不需要改。跑完脚本后,建议把差异结果保存成文件,方便对照着在库编辑器里逐项修。
3.4 封装绑定:符号引用了封装,但封装真的存在吗
引脚核对完成后,还有一个容易忽略的关联步骤:确认原理图符号的 Model 列表里绑定的封装名,在 PCB 封装库里真实存在。AD 的绑定机制是“名称匹配”,封装管理器里显示的是符号属性里写的那串文字,比如 “LQFP-48”,它并不会自动验证这个名字在当前加载的封装库中是否能找到。
操作路径是在原理图库编辑器中打开器件属性,找到“Models”区域,添加 Footprint 类型模型,然后从封装库列表中选择实际的封装。选择完成之后,把器件放一张原理图上,再切换到一个空白 PCB,用“更新 PCB”同步一次,看 PCB 上是否出现正确的封装图形。这一步能过滤掉一批“符号和封装名字对不上”的劣质库条目。
如果同步时报错“Footprint not found”,不要急着去网上找替换封装,先检查封装名拼写、检查封装库是否已经加载到当前工程的可用列表、检查封装是否存在大小写不一致。AD 的封装匹配对大小写敏感,我见过一个“LQFP48”和“LQFP-48”的差异导致整个网络表无法导入的案例,排查了半小时,最后就是加了一个横杠。
4. 出板前的参数核对:LQFP/QFN 焊盘尺寸、散热过孔和封装管理器
4.1 LQFP 和 QFN:同为贴片封装,焊盘设计完全不同
STM32 平台常用的封装可以粗分成两类:一类是 LQFP/TQFP,引脚从封装四周伸出来;另一类是 QFN,引脚不伸出来,而是贴着封装底部的四边做扁平焊盘。这两种封装对库的焊盘设计逻辑完全不同。
LQFP 封装的关键参数是引脚间距、引脚宽度、焊盘长度和焊盘外伸量。引脚间距常见 0.5mm 或者 0.8mm,这个值由芯片本身决定,库不能随便改。引脚宽度 b 通常由芯片数据手册给出范围,比如 0.17mm 到 0.27mm,封装库在设计时会把焊盘宽度做成比引脚最大宽度再宽 0.1mm 左右,给焊接误差留余量。焊盘长度方向则要往外延伸,一般比引脚长度多出 0.4mm 以上,这样焊盘外端才够容纳焊锡堆叠和视觉检查。
QFN 封装则多了一个所有 LQFP 都没有的要素:底部中心散热焊盘。这个焊盘尺寸通常很大,占整个封装底部的三分之一甚至更多,它的作用是把芯片内部产生的热量传导到 PCB,再通过 PCB 上的铜皮和过孔散到其他层。如果库里 QFN 封装没有中心焊盘,等于芯片底部悬空,热量全部堆在封装内部,轻则影响寿命,重则直接过热保护。所以拿到 QFN 封装后,第一步就是确认底部散热焊盘是否存在、尺寸是否接近数据手册推荐值。
4.2 散热焊盘的开窗和过孔阵列规划
QFN 封装能不能焊好,很大程度不取决于焊盘图形,而取决于钢网开窗和过孔设计。中心散热焊盘如果整个都被钢网盖住,回流焊时焊锡量过多,芯片会被顶起来,四周引脚虚焊;如果焊盘没开窗,焊锡根本不沾,芯片浮在 PCB 上。这里需要做的是“网格状开窗”。
我一般会在中心焊盘区域按 50% 到 70% 的开窗率设计钢网开口,具体做法是把这个大焊盘的助焊层(Solder)和钢网层(Paste)分别处理:Solder 层保持完整覆盖,保证焊盘露出;Paste 层用阵列小方块替代一个大矩形,让焊锡量降下来。
过孔阵列则是另一个翻车高发点。中心焊盘下方需要打一批过孔把热量导到内层或底层铜皮,但过孔如果直接裸露,回流焊时焊锡会顺着孔流走,形成锡珠甚至短路。常用做法是使用 0.3mm 钻孔、外径 0.6mm 左右的过孔,孔间距保持在 1.0mm 以上,并用树脂塞孔或电镀填平,再在表面镀铜。如果库里的 QFN 封装没有预放过孔,就要在 PCB 布局阶段手动补上:在焊盘区域内放置过孔,设置网络为 GND,并在焊盘周围的 DRC 规则里放行这些过孔。
补完过孔后,需要用 3D 预览检查一遍,看器件底部是否有过孔露在封装轮廓之外。很多人在这步图省事,直接复制别人板子上的过孔阵列位置,结果芯片换了个封装尺寸,过孔就露出了一排,后期打样回来才发现。底层原因其实不是过孔问题,而是没有把“焊盘尺寸变化”同步到过孔规划里。
4.3 用封装管理器做批量筛选:一次盯完几十个封装
封装库大全里几十个封装,如果每个都打开编辑器、放大缩小、肉眼观察,一下午就过去了。封装管理器这个功能能把一批封装放进同一个表格视图,按列排序和筛选,适合用来做大范围的“体检”。
打开 PCB 封装库后,运行“工具 → 封装管理器”,管理器会列出当前库中所有封装,每一行是一个封装,列包含焊盘数量、原点位置、高度、名称等。我常用的动作是先按“焊盘数量”排序。一个 LQFP-48 封装应该有 48 个焊盘,QFN-48 则通常是 48 个引脚焊盘加 1 个中心散热焊盘,共 49 个。排序后扫一眼,看到数量异常的封装就重点检查:焊盘数量与芯片手册不符,多半是封装本身画错了,或者把散热焊盘画成了多个小块。
再按“高度”排序可以筛 3D 模型缺失的问题:高度为 0 的封装通常没有关联 3D 模型,或者模型路径已经失效。这类封装在 2D 视图里完全正常,但 3D 预览中就是一块没有厚度的薄片,放进结构件里会有干涉风险。封装管理器里可以直接双击进入单个封装编辑,补模型、改原点、调整丝印层,操作路径都很直接。
还有一列值得留意,是封装名称里的尺寸标注。很多库的封装名直接包含焊盘间距,比如“LQFP-48-0.5”,看到名字里的 0.5 就知道引脚间距。如果芯片手册里写的推荐间距是 0.5mm,但库里封装尺寸标了 0.65mm,那基本可以判断封装来源有问题,要么是 TQFP 当成 LQFP 用了,要么是某位作者手工测量时有误差。这种一眼能看出来的错误,在封装管理器里比在编辑器里更容易暴露。
5. 常见问题排查:五个把板子画废的封装库坑位
5.1 引脚编号映射错位:GPIO 编号和物理引脚号混淆
现象:原理图网络表检查全部通过,但导入 PCB 后发现芯片部分网络飞线乱掉,比如 PA0 的网络飞到了物理 1 脚对应的焊盘上,而这个焊盘其实不该接到这个网络。更隐蔽时,DRC 不会报错,因为网络连接在电气上是完整的,只是接错了对象。
原因:原理图符号库在绘制时把引脚编号字段填成了 GPIO 名,比如把 14 号引脚写成 PB2 而不是物理编号 14。而 PCB 封装库的焊盘编号是按物理引脚来的,符号和封装之间的映射因此错位一整片。
解决:把符号库的引脚编号统一改成物理引脚号,引脚名保留 GPIO 和复用功能名。修改后重新编译原理图库,更新工程里的器件实例,再跑一遍网络表同步。不要只在 PCB 里手动改网络连接,那种改法治标不治本,下次放置新器件还会犯同样问题。
5.2 QFN 散热焊盘被映射成 1 号引脚
现象:网络表里 QFN 芯片多出一根地网络,而这根地线连到了本来应该是某个 GPIO 的引脚上;或者反过来,一个 GPIO 被莫名接到了 GND。DRC 报短路或未连接引脚。
原因:QFN 封装的中心散热焊盘在封装库里通常是第 49 号焊盘,但原理图符号里并没有对应的第 49 号引脚。AD 在同步时会把缺少对应符号引脚的封装焊盘自动映射到某个编号,最常见的结果就是映射到 1 号或其他已有引脚。
解决:在原理图符号编辑器中给器件增加一个“散热焊盘”引脚,编号设为 49,引脚名设为 GND,电气类型设置为 Power,并把这个引脚在原理图中接到地网络。或者在封装管理器里把散热焊盘的网络直接指定为 GND,保持它不在原理图中暴露。后一种做法更接近实际项目习惯,因为散热焊盘在原理图中本来就不应该反复出现。
5.3 集成库换了电脑后 3D 模型全部消失
现象:同一个工程文件,在原电脑上打开 3D 视图正常,拷到另一台电脑后所有器件变成平面图形,没有高度信息,结构检查完全没法做。
原因:集成库打包时只打包了原理图符号和 PCB 封装数据,3D 模型是外部 step 或 wrl 文件的路径引用。移动工程目录后,路径指向的源文件不存在了,AD 在找不到模型时也不会报错,只是静默地不显示。
解决:把库包里的 3D 模型目录整个复制到工程文件夹下,保持 step 文件相对路径不变。然后在 PCB 封装编辑器中打开“模型”选项卡,重新关联模型文件。关联完成后用“保存全部”更新封装库存盘。从那以后,每次拷贝工程我都会检查工程文件夹里是否包含 Models 目录,没有就直接补过去。
5.4 老封装库的英制单位转公制,焊盘尺寸越用越不对劲
现象:某个分立电阻电容封装,在库里看尺寸是正常的,放置到 PCB 上与相邻器件间距看起来也合理,但出 Gerber 后板厂反馈焊盘偏小,焊接强度不够。
原因:部分老封装库在早期版本中用英制单位编写,焊盘宽度按 mil 记录。例如 0.5mm 的焊盘宽度换算成 19.685mil,取整后变成 19mil,实际比公制算法小了约 0.04mm。单个焊盘不明显,但整板成百上千个焊盘累积下来,焊接质量和支撑强度都会受影响。
解决:在封装库中把单位切换到公制,逐个检查焊盘尺寸是否为整数 mil 转换过来的“畸形值”。批量处理时,可以用封装管理器选中所有焊盘,在表格中统一修改尺寸。注意不要直接做全局单位切换,因为有些封装本身画得就马虎,单位切换会把转出来的假精度当真理,建议以数据手册标注值为准重新调整关键焊盘尺寸。
5.5 位号丝印压焊盘,生产后识别困难
现象:PCB 加工完成后,发现丝印层元件编号一半被焊盘吃掉,或者被器件实体挡住,维修时要说“我猜这是 R12”。如果是小封装密集区,甚至出现两个位号重叠。
原因:封装库设计时没有给丝印层留出足够的空间,位号默认放置在器件中心,而这个位置恰好是 QFN 或小封装芯片的正上方。还有的库把位号字符高度设成 0.6mm 以下,生产时丝印糊成一团,什么也看不清。
解决:在封装编辑器中统一修改丝印字高和位号位置。STM32 周边的小封装,比如 0402 电阻电容和 SOT-23 三极管,位号字高最低建议 0.8mm;主控芯片这类大封装可以用 1.0mm 到 1.2mm。位置往器件本体外侧移,保持 0.3mm 以上净空距离。完成后重新生成丝印层 Gerber,用预览工具放大检查一遍再投板。
6. 拿库件后强制走七步:从批量核对到一次打样少返工
封装库这一类资源,最大的坑往往不是“库不够用”,而是“库里的东西看着能用,实际用起来才发现有问题”。所以我后来给自己定了一个强制验收流程,不管是从网盘下载的大全包,还是同事分享的单颗封装,都要走完这七步再放进正式工程。
第一步是把原始库包完整备份到固定目录,不动原件;第二步是把要用到的源库复制进当前工程目录,改用相对路径加载;第三步是挑出目标 MCU 封装,打开封装管理器核对焊盘数量和原点位置;第四步是把芯片拖进原理图,逐脚核对物理引脚号与数据手册的映射关系,这一步我会直接用前面那套 CSV 比对脚本;第五步是放一个器件到 PCB,跑一次“更新 PCB 同步”,确认符号和封装之间的绑定能正确解析;第六步是打开 3D 视图,检查器件模型高度和丝印位置,排除模型丢失和位号压焊盘;第七步是导出 BOM 表,核对位号、封装名、数量是否与设计一致。
这套流程看着繁琐,但每步都能拦截一类常见问题。第四步拦的是引脚映射错位,第五步拦的是封装名不匹配,第六步拦的是 3D 模型缺失,第七步拦的是库文件加载路径失效。我现在换新库时几乎都是这套流程跑一遍,尤其第六步的 3D 预览,帮我提前发现过好几次“封装看起来对,但器件高度超出结构限位”的情况,省下的打样费用远超当初整理库包花的时间。
从那以后,我每次给工程添加新器件,都会执行“先核对再放置,放置后同步,同步后预览”这三板斧。虽然不能保证所有封装库都完美可靠,但至少能把返工控制在打样之前。希望帮到你。
本文还有配套的精品资源,点击获取