(嫌无聊直接看最后一行的结论)
一、原理
1.按键类型
现在市场上大部分采用的都是这种按键按钮微动开关,这个开关使用简单、价格便宜。

2.按键消抖
因为按键按下和弹起这段时间会产生抖动现象,该现象会导致按键扫描误判。按键按下的瞬间和弹起的瞬间都会产生一个10ms的抖动时间,我们要在按键第一次判断为按下的时候,延时10ms再对它进行一下判断,如果判断结果还是为按下,我们这里认为按键此时被按下,松手检测直接用一个while循环等待既可,当松开按键,while的条件为假 退出循环。此时视为按键被松开。
3.IO口输入配置
IO口的输入模式有四种,分别为:
GPIO_Mode_AIN = 0x0, // 模拟输入
GPIO_Mode_IN_FLOATING = 0x04, // 浮空输入
GPIO_Mode_IPD = 0x28, // 下拉输入
GPIO_Mode_IPU = 0x48, // 上拉输入
总结:
①:模拟和浮空输入都不适合于按键,下拉输入默认低电平,上拉输入默认高电平
②:对于按键来说,选择上拉还是下拉,完全取决于按键电路是接地还是接VCC,接地选上拉,反之选下拉。
!!!接地选上拉,反之选下拉 !!!

这两端任意哪一端接VCC/GND都可以,但是必须是在一条直线上的才是一对,另一端接控制的 I/O口, I/O口实际的逻辑按照上面那句话的结论来写即可