news 2026/8/26 1:59:55

LED驱动与单片机控制全解析:从限流电阻到传感器联动

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LED驱动与单片机控制全解析:从限流电阻到传感器联动

做嵌入式这几年,LED(Light-Emitting Diodes)几乎是我在每个项目里都会碰到的元器件。从点亮一颗小灯到驱动整条灯带,从用GPIO闪个灯到配合传感器做联动报警,看起来简单,但里面藏着不少门道。这篇博文不打算讲教科书式的PN结理论,而是从实际问题出发,把LED的原理、驱动电路、单片机控制、传感器联动以及常见故障排查这些环节串起来聊一遍,顺便把限流电阻怎么算、SELV到底是什么、3个IO口怎么控制4个LED、光敏传感器怎么控制亮灭这类网上经常被问的问题一次讲清楚。不管你是刚接触电子的小白,还是正在做项目的工程师,应该都能在里面找到能直接照抄的干货。

1. 先从“发光”这件事说起:LED到底是怎么工作的

1.1 不是所有二极管都会发光

很多人一开始学电路,只知道二极管单向导电,却不知道LED为什么能发光。其实关键在于材料。普通二极管用的是硅(Si),电子和空穴复合时释放的能量主要以热量形式耗散掉。而LED用的是砷化镓(GaAs)、磷化镓(GaP)、氮化镓(GaN)这类化合物半导体,电子从高能级跃迁到低能级时,多余的能量会以光子形式释放出来,这就是电致发光效应。

材料不同,释放出来的光子波长就不同,肉眼看到的就是不同颜色。红黄光一般用AlInGaP,蓝光和白光基本是InGaN。白光LED其实是在蓝光芯片上涂了一层黄色荧光粉,蓝光激发荧光粉发出黄光,两者混合成白光。这也是为什么同一批白光LED的色温会有差异,因为荧光粉的涂布均匀性很难做到完全一致。

实际项目中,我们不需要背能带理论,但有一个参数必须理解:正向压降(Vf)。红光的Vf大约1.8到2.2V,绿光和蓝光大约2.8到3.4V,白光通常在3.0到3.6V之间。这个参数直接决定了驱动电路怎么设计,后面计算限流电阻全靠它。

1.2 电压、电流和亮度之间的“三角关系”

LED的I-V曲线和普通二极管一样,是非线性的。正向电压低于Vf时,电流几乎为零;一旦超过Vf,电流就会急剧上升。这就带来一个很关键的问题:LED不能用恒压源直接驱动。

我见过不少新手犯过这种错误:用5V电源直接接一个白光LED,结果LED瞬间冒烟。原因很简单,5V电源比3.2V的Vf高太多,LED的等效内阻又小,电流会飙到几百毫安甚至更大,远超LED能承受的20mA额定电流。

LED的亮度确实和电流正相关,但不是线性关系。更关键的是,亮度超过一定值后,再增大电流,人眼几乎看不出差别,反而只会增加热量。所以实际工程里,我们很少把LED推到额定电流上限,通常只用到70%到80%。比如额定20mA的灯珠,设计时按16mA左右算,这样既保证亮度,又留了寿命余量。

还有一个必须注意的现象是负温度系数。温度升高时,LED的Vf会下降,如果供电电压不变,电流就会增大,进一步升温,形成“热失控”。所以串联一个限流电阻,不只是限制电流,更是在帮你稳定整个系统。

2. LED驱动电路设计:从限流电阻到恒流驱动

2.1 限流电阻的计算,真的不是随便焊一个

最简单的LED驱动就是一个电阻串联在电源和LED之间。计算方式也不难:

R = (Vcc - Vf) / I

举个例子,5V电源,驱动一颗红光LED,Vf按2.0V算,目标电流15mA:

R = (5 - 2) / 0.015 = 200Ω

取标称值220Ω,实际电流大约是(5-2)/220 = 13.6mA,足够亮了。

但要注意几个坑。第一,不同颜色的LED Vf不一样,如果红光和蓝光共用一个电阻值,亮度会差很多。蓝光Vf按3V算,5V供电、220Ω电阻,电流只有(5-3)/220 = 9mA,比红光的13.6mA明显暗。所以不同颜色的LED必须分别计算限流电阻。

第二,电阻的功率也要关注。红光LED那个例子,电阻上压降是3V,电流13.6mA,功率大约0.04W,用0603封装(额定0.1W)没问题。但如果电流加大到50mA,功率就是0.15W,这时候必须上0805甚至1206封装,否则电阻会发烫甚至烧毁。

第三,多颗LED并联时,尽量不要共用一个电阻。因为LED的Vf有离散性,同一批料都会有几毫伏到几十毫伏的差异,并联后Vf低的那颗会分走更多电流,容易导致亮度不均甚至过流。如果空间实在紧张,可以在每颗LED前面串一个小阻值均衡电阻,比如10到22Ω,再共用一个主限流电阻。

2.2 SELV在LED电源里是什么意思

做LED照明项目的朋友,肯定在电源规格书或安规文件里见到过SELV这个词。SELV全称是Safety Extra-Low Voltage,安全特低电压。

这个概念的出发点很朴素:如果输出端电压足够低,人直接接触也不会造成电击伤害,那就可以算安全电源。常见的理解是指输出直流电压在60V以内(不同标准体系有细节差异,比如IEC 62368-1对直流SELV的限值是60V,有的标准用42.4V峰值),并且输出端与交流电网之间必须有足够的隔离。

为什么LED电源特别爱提SELV?因为LED灯带、灯板经常被人徒手触摸,尤其是一些明装的灯串、灯条。如果电源是SELV输出,那么即使线皮破了你手摸到,也基本不会触电。反过来,如果电源输出是48V以上非SELV,那客户就要多考虑防护要求。

选型时有个经验供参考:室内低压灯带,用12V或24V的SELV电源,驱动电路自己再做限流。12V适合短的灯带,24V适合长距离传输,因为压降小。24V整条灯带的压降问题还是比12V好很多,但这又是另一个话题了。

2.3 NMOS驱动LED的电路细节

很多MCU的IO口驱动能力有限,直接推LED可能电流不够,或者电流太大把IO口烧了。这时候就要外接驱动管,NMOS是常见选择。

NMOS做低边驱动,电路长这样:LED阳极接正电源,阴极接NMOS漏极(D),NMOS源极(S)接地,栅极(G)通过一个小电阻接MCU的IO口。MCU输出高电平时,NMOS导通,LED电流形成回路;输出低电平,NMOS关断,LED熄灭。

用NMOS而不是NPN三极管的原因主要是压降和散热。饱和状态的NPN三极管管压降大约0.2V,而低导通电阻的NMOS导通时漏源电压可能只有几十毫伏,在大电流场景下损耗更小。不过NMOS选型有个关键参数:栅极阈值电压Vgs(th)。老一些的MOS管Vgs(th)可能要到3V甚至5V,MCU如果3.3V供电,根本不能可靠开启。所以一定要选“逻辑电平MOS管”,比如Vgs(th)在1.5V左右甚至更低的型号。

栅极串联电阻Rg也很有讲究。MCU IO口输出方波时,栅极电容和Rg构成RC充电回路,Rg大了,开关速度慢;Rg太小,瞬间冲击电流可能损伤IO口。一般取100Ω到1kΩ。同时一定要在栅源之间加一个10k到100k的下拉电阻,防止MCU上电瞬间IO口悬空导致MOS管误导通。

很多工程师还喜欢用PWM调光。用NMOS做低边开关,PWM频率尽量不要低于100Hz,否则肉眼能看出闪烁。常见的做法是1kHz到20kHz,这里要注意,频率太高MOS管的开关损耗会增加,电感驱动的LED还要考虑电感啸叫问题。

3. 单片机控制LED的几种典型玩法

3.1 STM32CubeMX里的LED引脚配置,别搞错Mode

现在做STM32开发,基本都是用STM32CubeMX生成初始化代码。配置LED引脚这件事看着简单,但如果你选错了GPIO模式,后面会踩不少坑。

打开STM32CubeMX,在Pinout & Configuration界面里,把你要接LED的引脚(比如PC13)设为GPIO_Output。然后在左侧的GPIO配置里,关键参数要设置对:

  • GPIO output level:先设成High还是Low。注意如果你的LED阴极接IO口,阳极接正电源,那么初始应该是High(LED灭);如果LED阳极接IO口,阴极接地,初始应该是Low(LED灭)。很多人在这里设反,一上电灯就亮了。
  • GPIO mode:Output Push Pull(推挽输出)。推挽输出模式下,IO口既能灌电流也能拉电流,适合直接驱动LED。开漏输出通常用于需要外部上拉的场景,比如I2C总线和电平转换,直接驱动LED意义不大。
  • GPIO Pull-up/Pull-down:一般设No pull-up and no pull-down。很多人随手选个上拉,结果LED微亮,排查半天。
  • Maximum output speed:LED这种低速信号选Low就够了,没必要选High,反而会增加EMI。

配置好后生成代码,点亮和熄灭就两个函数:

HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET); // 灭 HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); // 亮

如果要翻转状态,用:

HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);

实测贴士:STM32的IO驱动能力一般标称±20mA,但千万不要把IO口直接驱动大电流LED,更不要多路LED共用VCC却从IO口取电。稳妥的用法是IO口输出控制信号,驱动MOS管或专门的LED驱动芯片。

3.2 3个IO口控制4个LED:查理复用(Charlieplexing)玩法

网上常有人问3个IO口怎么控制4个LED,其实3个IO口理论上最多能控制6个LED,这个方法叫Charlieplexing,也叫查理复用。核心是利用IO口的三种状态:高电平、低电平、高阻态,再加上LED的单向导电性,让任意两个IO口之间都能有一只LED被点亮。

原理推导很简单:3个IO口,任意取两个IO口分别设成高和低,剩下一个设成高阻,就会有一对LED可能被点亮(方向不同对应不同LED)。3个IO口两两组合有3对,每对正反两个方向,所以一共6个LED。

拿3个IO控制4个LED来举例。设IO0、IO1、IO2三个引脚,LED1接在IO0和IO1之间(阳极朝IO0),LED2接在IO1和IO0之间(阳极朝IO1),LED3接在IO0和IO2之间,LED4接在IO2和IO0之间(或者任意组合,只要满足每颗LED接在两个不同IO之间)。想点亮LED1,就把IO0设为高,IO1设为低,IO2设为高阻。此时电流从IO0流过LED1到IO1,LED1亮;其他LED因为两端没有正向压差,不亮。

同一时间只能亮一颗LED,所以要让多颗LED看起来“同时”亮,必须高速扫描。刷新频率至少要做到100Hz以上,也就是每颗LED的导通时间不超过2.5ms(四颗灯轮流亮,一个周期10ms)。肉眼看到的就是四颗灯同时亮着。

实际做的时候有两个坑必须注意。第一,IO口驱动能力有限,每颗LED的电流建议限制在5mA以内,电阻要串在IO口或LED支路上。第二,MCU的几个IO口不能同时设为高阻后再切换,否则在切换瞬间可能会出现短暂的反向过压。所以代码里要先把所有IO口设为高阻,再设置目标状态,避免产生毛刺。

如果你觉得Charlieplexing扫描代码写起来麻烦,或者灯的数量多,直接上74HC595这种串转并芯片更省心。查理复用的优势是省IO,适合低成本、小体积、灯数量少的场景。

3.3 LED闪灯驱动芯片,比你想的更省事

网上搜“LED闪灯驱动芯片”,会看到很多专用芯片。这类芯片内部集成了振荡器、电流控制和驱动电路,你只需要接上电源和LED,甚至不需要MCU,它就能自己闪烁。

比较典型的设计是:芯片供电3V到5V,外部接一个电阻设定闪烁频率(有些芯片用外部电容定时),输出引脚直接驱动LED。这种方案的优势是:MCU零负担、占空比稳定、抗干扰能力强。很多带呼吸灯的低成本玩具、电子标识牌、车充指示灯都在用。

选型时要注意几个参数:

  • 工作电压范围,比如2.5V到5.5V,别超了。
  • 输出电流能力,有的芯片输出就几十毫安,别指望驱动大功率灯带。
  • 闪烁频率的选择,快闪一般是1Hz到3Hz,呼吸灯模式要挑支持PWM调光的芯片。
  • 是否有待机引脚,很多芯片必须额外接一个使能脚,否则上电就闪。

如果你只是想在MCU项目里做个闪灯效果,其实用MCU的PWM或定时器翻转GPIO就够了,不需要额外芯片。专用芯片的真正价值在于“不需要写任何代码”,以及工业产品里某些必须独立于主控来闪烁的指示灯(比如主控死机了,灯还能表明系统有电)。

4. LED与传感器联动的实战案例

4.1 光敏传感器控制LED亮灭的完整思路

光敏传感器控制LED,最常见的场景就是天黑灯亮、天亮灯灭,比如楼道小夜灯、庭院太阳能灯。实现思路有两条路:一条是纯模拟电路,一条是MCU配合ADC读取。

先讲纯模拟方案,理解了这个,数字方案就水到渠成了。核心元件是光敏电阻(LDR),它在强光下电阻值很小(几kΩ),黑暗环境下电阻值很大(几百kΩ甚至兆欧级)。用一个电阻和光敏电阻串联分压,中间节点电压会随着光线变化。把这个节点电压接到比较器或者三极管的基极,就可以控制LED。

关键点是滞回设计。如果直接用单阈值比较,光线在临界点附近时,LED会快速开关,要么闪烁,要么继电器嗒嗒响。解决办法是加滞回,也就是“天黑到某个亮度时点亮,天要更亮一些时才熄灭”,中间有大约200到500勒克斯的差值。用运放搭滞回比较器,或者用MCU写软件滞回都行。

如果走MCU路线,电路更简单:光敏电阻和10kΩ电阻分压,中间接ADC引脚。MCU每隔100ms读一次ADC值,超过阈值就亮灯,低于阈值就灭灯。软件滞回也可以在AD值层面做:比如ADC值大于4000点亮,小于3500才熄灭,中间的区间保持上一次状态。

这里有个实用经验:光敏电阻对光的变化响应速度不快,在快速变化的场景下(比如车灯扫过)会有拖影,这反而是一种天然的滤波效果。如果你想要更快的响应,可以用光敏二极管或环境光传感器(比如BH1750),但成本会高一些。

4.2 红外超声波传感器、LED、蜂鸣器三级报警怎么做

这个题目里的“三级”,我理解是希望根据感知距离,分级输出不同强度的警告。最典型的应用是倒车雷达或者盲区警示装置。我用超声波模块HC-SR04加上单片机控制LED和蜂鸣器,就能搭出一个三级报警系统。

HC-SR04的工作原理很容易懂:给Trig引脚一个10us以上的高电平,模块内部发出8个40kHz的超声波脉冲,同时把Echo引脚拉高。声波遇到障碍物反射回来后,Echo引脚变低。MCU只需要测量Echo引脚高电平持续的时间,距离就能算出来:

距离(cm) = 高电平时间(us) / 58

比如Echo高电平持续1000us,距离大约是1000/58 = 17.2cm。

然后设计三级报警逻辑:

  • 距离大于60cm:绿灯常亮,蜂鸣器不响。
  • 距离30cm到60cm:黄灯慢闪(比如1Hz),蜂鸣器每500ms短鸣一次。
  • 距离小于30cm:红灯快闪(5Hz),蜂鸣器连续鸣叫。

代码逻辑写起来不复杂:定时器或输入捕获测Echo高电平时间,然后判断距离,执行不同的LED和蜂鸣器控制。

实际做的时候有几个坑:

第一是盲区。HC-SR04的盲区大约2cm到5cm,距离太近反而测不准。如果你要检测极近距离,要换超声波改红外测距模块(GP2Y0A21)或者激光测距。

第二是超声波测距有探测角度。单探头超声波的波束角约15度到60度,如果障碍物不在正前方,读数会跳变。给LED和蜂鸣器加一点软件滤波,比如连续读3次取中位数,能大幅减少误报。

第三是蜂鸣器的驱动方式和LED不同。有源蜂鸣器内部有振荡源,用普通GPIO加NMOS就能驱动;无源蜂鸣器需要PWM信号(比如2.7kHz)才能发声,不能简单给高电平。千万别选错。

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

5.1 LED灯珠电压检测电路是怎么做的

为什么要检测LED灯珠电压?主要是为了判断灯珠有没有开路、短路,或者老化到不太正常的程度。比如LED灯串中一颗LED开路,整条灯串都会灭,如果能在早期检测出是哪一路电压异常,维护成本就低很多。

最简单的方法是用ADC量LED两端的电压。设计思路如下:LED串联一个限流电阻,同时LED两端并联一个分压电阻网络,把电压衰减到MCU ADC的输入范围以内(比如0到3.3V)。MCU周期性地读取这个电压值,和正常Vf范围做比较。

比如正常工作白光LED,Vf大约3.0到3.4V。如果ADC读到接近0V,可能是LED短路;如果读到接近电源电压(驱动关断时),可能是LED开路或者驱动没开启。但这只能做粗略判断,因为限流电阻上的压降不是零,LED开路时读数也不完全是电源电压。更可靠的做法是:在检测时刻用一个很小的恒流源点亮LED,同时量Vf。恒流源能保证不同批次、不同温度下电流一致,Vf读数才有可比性。

实际项目里,我习惯用一个IO口控制MOS管或三极管来切换LED的供电和检测模式。检测阶段断开大电流驱动,用小电流(比如1mA)点亮LED并采样Vf;正常点亮阶段再开启大电流。这种“采样-点亮”在时间上分开的做法,能很干净地避开干扰。

5.2 DCSD status LED 这类状态灯的排查思路

有网友问“DCSD status LED”,我猜这指的是某个设备或开发板上的状态指示灯,可能是DCSD模块或者外围设备的指示LED。不管它具体叫DCSD还是别的,排查思路是通用的,按顺序来就行。

第一步,先量LED本身。用万用表二极管档,红表笔接LED阳极,黑表笔接阴极,正常LED会微微发光,读数在0.6V到1.2V左右(同一颗LED在二极管档下Vf和点亮时的Vf不完全一样,但能判断好坏)。如果完全不亮且显示OL,大概率LED开路或引脚虚焊。

第二步,量限流电阻。如果电阻没焊好或者阻值焊错,电流就会不对劲。1kΩ和10kΩ看起来差不多,但亮度会差很多,这是最常见的“灯不亮”原因。

第三步,量控制信号。如果能找到LED驱动管的栅极或三极管的基极,用示波器看有没有对应的电平或PWM波形。如果没有波形,问题在主控侧,检查GPIO配置、程序是否跑起来了、有没有死机。

第四步,查电源。很多LED不亮不是LED的问题,而是整个系统没供电,或者供电电压被拉低。我不止一次遇到板子上其他功能正常,但某颗LED必灭,一查才发现是公共电源走线细,电流一大电压就掉下来。

整理一个速查表,方便对照:

现象可能原因处理办法
上电常亮但需要灭GPIO输出模式配置不对或驱动管失效检查GPIO direction和初始电平,换驱动管
灯不亮但MCU代码正常LED损坏、限流电阻开路、接线错万用表量LED和电阻,查焊点
亮度明显偏低限流电阻偏大、供电电压偏低、PWM占空比低重新计算R,量实际电源电压,查PWM设置
工作时闪烁电源不稳、接触不良、定时器配置毛刺加大电容,检查焊接,用示波器看VCC纹波
上电瞬间闪一下GPIO上电默认电平不对在CubeMX里设默认高电平或外部下拉电阻

5.3 LED数字时钟字体和显示细节

聊到LED数字时钟,很多人其实想说的是七段数码管显示。七段数码管有共阴、共阳两种,选型之前先搞清楚你要驱动的是哪一种。共阳数码管把所有段的阳极接在一起,你只要在每个阴极引脚上给低电平,那段就亮。共阴则反过来。

段码表是绕不开的东西。以共阴数码管、8段包含小数点为例,显示数字0到9的段码是:

const uint8_t seg_code[10] = { 0x3F, // 0 0x06, // 1 0x5B, // 2 0x4F, // 3 0x66, // 4 0x6D, // 5 0x7D, // 6 0x07, // 7 0x7F, // 8 0x6F // 9 };

这个段码表依赖a段接bit0、b段接bit1的顺序,实际接线不同要重新映射,别直接抄。

如果做多位数码管,动态扫描时最容易出现“鬼影”和拖影。原因是段切换的瞬间有短暂的前一段数据残留。解决方法很简单:在任何段码切换之前,先把所有段关闭(给共阴管全部置高),再输出新的段码,等稳定后再选中下一个位。顺序是“灭段 -> 送段码 -> 选位 -> 延时”,循环执行。如果不做这个处理,时钟显示的数字边缘会有重影,非常掉档次。

刷新频率也很重要。两到四位扫下来,每一位的刷新率不能低于50Hz,最好做到100Hz以上。用定时器中断扫描,不要在main函数里用delay来做,否则主循环一卡,全盘闪烁。

如果你做的是LED点阵时钟或像素风格字体,那思路又不一样。点阵字模可以用取模软件(比如PCtoLCD2002)来生成,取模方向设成“行优先”、“逐行取模”还是“列优先”,必须和你的扫描方式对上。这也是网上下的字模在别人板子上正常、到你板子上全乱的根本原因。

写在最后的一点心得

LED这个元器件太常见了,常见到很多人把它当成一个“亮就行”的小零件。但真正做项目才会发现,LED驱动的核心从来不是“会不会亮”,而是“能不能稳定地、可预期地、按设计地亮”。这些年我踩过最大的坑,一个是供电电压和Vf之间的余量没算清,另一个是GPIO初始电平没设对导致上电乱闪。做任何LED相关设计前,先问自己三个问题:电源电压是多少?目标是恒流还是限流?万一LED短路/开路,系统会不会出问题?把这三个问题想明白了,LED部分的可靠性基本就有保障了。希望这篇博文能帮你在自己的项目里少走两步弯路。

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

基于Spring Boot的校园“拼车顺路同行”平台设计与实现

1. 项目背景与意义 随着高校办学规模的扩大和校区分散布局的常态化,学生跨校区上课、实习通勤、节假日返乡等出行需求日益频繁。传统的公共交通在高峰时段运力紧张,出租车和网约车费用较高,而校园内大量私家车和教职工车辆存在空座闲置的情况…

作者头像 李华
网站建设 2026/8/26 1:56:48

计算机组成原理与操作系统:硬件与软件的协同,构建系统级理解

1. 从“黑盒”到“白盒”:为什么我们需要同时学习这两门课?很多刚接触计算机专业核心课程的同学,心里都会有个疑问:计算机组成原理和操作系统,这两门课听起来都挺“硬核”的,它们到底有啥区别?是…

作者头像 李华
网站建设 2026/8/26 1:55:05

ARM-Linux-GCC交叉编译器实战指南:从安装配置到项目构建

1. 从零到一:为什么你需要一个专属的交叉编译器如果你刚开始玩树莓派或者类似的ARM开发板,可能会发现一个挺有意思的现象:你在自己电脑(通常是x86架构的Windows或Linux)上写好的C程序,直接拿到开发板上跑&a…

作者头像 李华
网站建设 2026/8/26 1:52:54

基于大模型的多轮对话式架构图Agent设计与实现

1. 从“画图”到“对话式设计”:为什么我们需要一个架构图Agent?最近在做一个新项目,需要快速梳理一个微服务系统的整体架构。我的第一反应是打开绘图工具,拖拽几个方框,画几条线。但画着画着,问题就来了&a…

作者头像 李华
网站建设 2026/8/26 1:52:41

0825晨间日记

# 0825晨间日记 - 关键词 - 上午- 网络问题- 搬来准备路由器切换到AP是否能接入- 不行,分配的地址是192 168- 开发对比的软件- 纸档的料表和程式到底能不能对的上- 需要升级当前的软件进行对比- 一个上午来实现了开发- 开发中也发现: crb文件内实现精准的…

作者头像 李华
网站建设 2026/8/26 1:50:46

资源受限MCU调试实战:从GPIO打点到崩溃转储

1. 从一块“哑巴”板子说起:最小资源调试的核心思路我做嵌入式这些年,接手过的项目里有相当一部分是“哑巴设备”:一颗低端MCU,Flash只有32KB、RAM只有4到8KB,没有引出JTAG/SWD调试接口,没有液晶屏&#xf…

作者头像 李华