LED1为什么会亮?
当我使用示波器的探头一头接到控制LED1的PC6引脚,一头接到板子的GND,默认的PC6引脚的状态会使LED1亮,原因是示波器的探头打到10x时,电阻很大,而PC6引脚不设置的状态默认为浮空输入(高阻态);意味着这个引脚与内部的电路几乎是断开的状态,对外部环境极其敏感,
10x档位的探头,探头的金属尖端和里面的芯线之间串联了一个9MΩ的巨型电阻,普通导线连PC6与板子的GND,灯根本不会亮,示波器的探头因为内部有9MΩ的大电阻,不会把PC6短路到地;相反,它使引脚上的电压"浮起来";
- 工作原理 :那个 9MΩ 电阻和示波器内部的 1MΩ 电阻(加起来总共 10MΩ),给被测试的引脚提供了一个极高的对地阻抗。正是因为有这个高阻抗,环境里极其微弱的 50Hz 杂波电流才能在这个 10MΩ 的阻抗上产生足够高的电压(拉高到 3.3V),从而点亮 LED。
1K 电阻 + 高灵敏度 LED 极易被触发
你原理图上接的 1K 限流电阻 非常小。当悬空的 PC6 引脚被杂波"抬"到 3.3V 时,虽然电流极小,但 3.3V 足以突破 LED 的 1.8V 开启电压,产生微弱的电流,这就是你看到灯亮的根本原因。
2复杂的"同轴电缆"起到了天线作用
你手上那个长条形的探头手柄,连着一根黑色的粗线。这根线不是普通的电线,而是一根**"同轴电缆"** 。
同轴电缆的外层是一层金属编织网(连接着示波器的接地夹),内层是芯线。
-
当你的手握着探头时,你的身体和探头的外壳成为了一个巨大的**"捕波天线"**。
-
环境中的 50Hz 杂波被你的身体捕获,通过同轴电缆的屏蔽层传导,在尖端(探针)处形成了微弱的感应电压。因为这个电压正好搭在了高阻的 PC6 引脚上,就"点亮"了 LED。
3它的正确角色:高阻"探针"
在正常的测量工作中(比如你之前成功抓到 0x55 的串口波形),示波器探头扮演的是 "不带负载的观察者" 。
因为它内部有 10MΩ 的输入阻抗,所以当它点在一个正在工作的、正常输出的 3.3V 引脚上时,它不会偷走引脚的电流,所以它能非常真实地把波形显示出来,而不会干扰单片机的工作。
但是我将PC6引脚设置成了GPIO_OUT模式,引脚内部的驱动能力就会变得非常强大(相当于给引脚接了几十欧姆的强力牵引器,即输出阻抗非常小,单片机内部的驱动电路会强行把这个引脚锁定在0V或3.3V);
环境中的电磁杂波虽然还存在,但面对"内力深厚"的单片机输出电路,那点微不足道的杂波能量再也无法撼动引脚的电压,灯就不会再"瞎亮"了。
这时候,我再使用探头去点亮它,杂波也不会推动这个引脚;灯只能听从我的代码,使用
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_SET);
HAL_GPIO_OUT(GPIOC,GPIO_PIN_6,GPIO_PIN_RESET);来控制LED1的亮灭了
如果我把板子擦除设置,PC6又回到默认的浮空输入的状态,仍然会使LED1亮使用探头;
天线是什么?
"天线"其实就是一种专门用来"捕捉"空间中电磁波的特殊金属导体。
我们周围充满了各种看不到的电磁波(无线电广播、手机信号、Wi-Fi,以及墙壁电线发出的 50Hz 杂波)。
当这些空间中的电磁波"撞"到一根金属导体(天线)上时,它会推动金属里面极微小的电子流动 。这就相当于,天线把空间中无形的电磁波,转换成 了电路里微弱的感应电压和电流。
当你用手去握探头时:
-
你的身体 + 探头线的金属屏蔽层 → 变成了一个巨大且高效的"天线"。
-
这个巨型天线把周围 50Hz 的市电杂波给收集了起来。
-
因为你的 PC6 引脚是"悬空"的(没有强制接地,阻抗极高),这根天线收集到的微弱电流没有地方去,只好全部涌向 PC6 引脚,就像水库的水往低处流一样。
-
只要这股感应到的微弱电流,让 PC6 的电压超过了 1.8V,你接在它上面的 LED 就会被点亮。