1. 按键输入原理与硬件基础
1.1 机械按键的电气特性
机械式轻触按键在物理结构上由弹性金属簧片和触点组成。当按下或释放按键时,簧片发生形变,导致触点接触或分离。这一过程并非瞬时完成——由于金属材料的弹性振动、触点表面微观不平整以及氧化层的存在,实际电气通断会在几毫秒内经历多次“通-断-通”的反复跳变。这种现象称为机械抖动(Mechanical Bounce),典型持续时间为5–20ms。
对人类操作而言,该时间尺度完全不可感知;但对运行在MHz级主频下的STM32微控制器而言,一次抖动周期内CPU可执行数千条指令。若程序直接读取处于抖动状态的GPIO引脚电平,将连续获取到高、低电平交替的无效信号,导致状态误判。例如:一次有效按键动作可能被识别为3次独立按下,或在松开过程中被误认为再次按下。
1.2 硬件消抖电路设计
学习板采用RC低通滤波器实现硬件消抖。以K1按键为例,其电路结构为:PB12引脚 → 10kΩ上拉电阻 → VDD(3.3V),同时PB12通过按键触点连接至GND,并在PB12与GND之间并联一个100nF陶瓷电容。
该电路工作原理如下:
- 按键释放状态:触点断开,PB12经10kΩ电阻上拉至3.3V。此时电容已充满电,两端电压为3.3V,对PB12节点无放电电流,引脚稳定维持高电平。
- 按键按下瞬间:触点闭合,PB12通过低阻路径(<1Ω)直接连接GND。电容开始通过触点快速放电,但由于电容存在充放电时间常数τ = R×C(此处R为触点导通电阻+PC