1. 按键输入原理与硬件设计基础
1.1 机械按键的电气特性与抖动本质
机械式轻触开关(Tactile Switch)在物理层面依赖金属弹片的弹性形变实现通断。当用户按下或释放按键时,弹片并非瞬时完成稳定接触或完全分离,而是在微秒至毫秒量级的时间窗口内发生多次微小的弹跳(Bounce)。这种弹跳表现为触点间反复的“接通-断开-接通”震荡过程,典型持续时间为5–20 ms。对人类操作而言,该过程不可感知;但对运行频率达数十至数百MHz的STM32微控制器而言,其GPIO引脚在此期间将捕获到一串高、低电平交替的脉冲信号。
若直接将未经处理的抖动脉冲送入程序逻辑判断,会导致单次物理按键动作被误识别为多次触发。例如,在状态翻转应用中,一次按下可能引发LED亮灭状态连续切换数次,最终呈现不可预测的终态;在计数类应用中,则造成数值跳变失真。因此,消除抖动是可靠按键输入的前提。
1.2 硬件消抖:上拉/下拉电阻与RC滤波网络
本学习板采用典型的硬件消抖方案:在按键与MCU GPIO之间接入RC低通滤波网络。原理图显示,K1按键一端接PB12,另一端经10 kΩ上拉电阻连接至3.3 V电源,并并联一个约100 nF陶瓷电容接地。该结构构成一个时间常数τ = R × C ≈ 1 μs的RC电路,远小于抖动持续时间,但足以对高频抖动毛刺进行有效衰减。
从电路拓扑角度分析,当按键处于释放状态时,PB12通过10 kΩ电阻被强制拉至3.3 V,此时GPIO检测到稳定的高电平;当按键按下时,PB12经按键触点直连GND,形成低阻通路,电容迅速放电,PB12电压被强制拉至0 V。由于电容的储能特性,其充放电过程平滑了触点弹跳引起的电压突变,使GPIO采样点获得相对平稳的电平过