2、按键控制
About 2 min
学习目标
1.学习STM32按键基本工作原理。
2.使用按键模块控制板载led灯的开关。
按键模块介绍:
按键是一种电子开关,使用时轻轻按开关按钮就可使开关接通,当松开手时, 开关断开。
由于机械点的弹性作用,按键开关在闭合时不会马上稳定的接通,在断开时 也不会一下子断开,因而在闭合和断开的瞬间均伴随着一连串的抖动。抖动时间 的长短由按键的机械特性决定的,一般为 5ms 到 10ms。按键稳定闭合时间的长短则由操作人员的按键动作决定的,一般为零点几秒至数秒。按键抖动会引起按键被误读多次。为了确保 CPU 对按键的一次闭合仅作一次处理,必须进行消抖。 按键消抖有两种方式,一种是硬件消抖,另一种是软件消抖。为了使电路更加简单,通常采用软件消抖。我们开发板也是采用软件消抖,一般来说一个简单的按键消抖就是先读取按键的状态,如果得到按键按下之后,延时 10ms,再次读取按键的状态,如果按键还是按下状态,那么说明按键已经按下。其中延时 10ms 就是软件消抖处理,至于硬件消抖,大家可以百度了解下,网上都有非常详细的介绍。
硬件搭建
外部中断实验所用按键器模块及杜邦线需要另购,否则缺少重要配件,无法完成本节课程。
![](/assets/img/stm32/STM32F103C8T60.96TFT/60.png)
程序分析
按键初始化:
![](/assets/img/stm32/STM32F103C8T60.96TFT/61.png)
KEY_Init()函数用来初始化按键的端口及时钟。要知道按键是否按下,就需 要读取按键所对应的 IO 口电平状态,因此我们需要把 GPIO 配置为输入模式。
按键检测函数:
![](/assets/img/stm32/STM32F103C8T60.96TFT/62.png)
KEY_Scan 函数比较简单,消抖后直接判断按键是否按下,按下则改变led灯的状态。
主函数代码:
![](/assets/img/stm32/STM32F103C8T60.96TFT/63.png)
主函数首先将使用到的硬件初始化,然后在 while 循环内调用按键扫描函数。
实验现象
程序下载完成之后,可以通过按键控制led灯的亮灭,按一下按键,led灯亮再按一下则熄灭。