GPIO输入——按键检测

 

当按下一个按键时,系统是如何检测到的呢?

我们通过LED灯的亮灭状态来间接完成按键检测。当按下按键时,LED灯亮,再次按下时,LED灯灭。

要完成这个实验,我们就会用到GPIO外设的基本输入功能。

查阅开发板的按键原理图,如图3-1。

图3-1

图中的K1、K2即为按键。以K1为例,当未按下按键时,其PA0引脚处于接地状态,即低电平,按下按键时,引脚接到电源,输入状态为高电平。所以只要我们检测按键对应引脚(这里是PA0)的输入电平状态,即可判断按键是否被按下。这便是按键的检测原理了。

有一点需要知道,由于机械按键的弹性作用,按下按键时并不会马上稳定接通或断开,即存在按键抖动。一般情况下我们需要通过软件或硬件的方式消抖才能得到理想的实验效果。软件消抖如通过定时器延时等方式,忽略前后的抖动;而硬件消抖,如可以利用电容的充放电延时等方式。本文默认已经进行过消抖处理了。

直接开始编程环节的分析。

首先得使能GPIO端口的时钟,然后初始化按键和LED灯的引脚,最后通过读取引脚不同电平状态控制LED灯的状态切换。这便是这个实验的大致步骤了。

 

使能GPIO端口时钟

所有的GPIO外设都挂载在APB2总线上,所以其使能寄存器为RCC_APB2ENR,查阅固件库手册可得其固件函数为RCC_APB2PeriphClockCmd(该固件函数功能即为对RCC_APB2ENR寄存器操作的封装)。我们需要使能的是GPIOA时钟,所以可调用如下API实现使能时钟:

RCC_APB2PeriphClockCmd(
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值