1. 按键输入的工程本质与硬件基础
在嵌入式系统中,按键输入看似简单,实则是连接物理世界与数字逻辑的关键接口。它并非单纯的“按下-响应”动作,而是一套涉及机械特性、电气行为、时序约束和软件建模的完整工程链条。理解其底层机制,是避免后期调试陷入“按键失灵”、“状态误判”、“灯效异常”等典型问题的前提。
1.1 按键的机械抖动:微秒级的物理挑战
学习板上使用的硅胶按键,其内部由弹性金属簧片构成。当手指施加压力时,簧片发生形变并最终接触触点;松开时,簧片依靠自身弹力恢复原状,断开触点。这个过程并非理想化的瞬时通断。在接触或分离的临界瞬间(通常持续5–20ms),由于簧片的弹性振动和触点表面微观不平整,实际电气连接会经历多次快速的“接通-断开-接通”震荡。这种现象称为机械抖动(Mechanical Bounce)。
对人类而言,这几十毫秒几乎不可感知;但对运行在72MHz主频下的STM32F103而言,一个指令周期仅约14ns,整个抖动过程内CPU可执行数百万条指令。这意味着,若程序在抖动期间连续读取GPIO引脚电平,将捕获到一串高、低电平交替的无效脉冲,而非一个稳定的“按下”或“松开”事件。直接以此作为控制依据,必然导致LED状态反复翻转、计数器错误累加等逻辑崩溃。
1.2 硬件消抖:RC电路的物理滤波原理
学习板原理图第4页左下角显示,K1与K2按键均并联了一个电容(通常为100nF)。该电容与上拉/下拉电阻共同构成一个RC低通滤波器。其核心作用是利用电容的电压不能突变这一基本物理特性,对抖动产生的高频毛刺进行平滑。
以K1(上拉按键)为例分析: <