第六章 GPIO输入——按键检测

第六章 GPIO输入——按键检测

目录

第六章 GPIO输入——按键检测

1 硬件设计

2 软件设计

2.1 按键输入检测方式

2.1.1 按键扫描

2.1.2 外部中断

2.2 编程要点

2.3 代码分析

2.4 下载验证


本章参考资料:《W55MH32中文参考手册》按键检测使用到GPIO外设的基本输入功能。

1 硬件设计

        按键机械触点断开、闭合时,由于触点的弹性作用,按键开关不会马上稳定接通或一下子断开, 使用按键时会产生图 按键抖动说明图 中的带波纹信号,需要用软件消抖处理滤波,不方便输入检测。本实验板连接的按键带硬件消抖功能, 见下图:

        它利用电容充放电的延时,消除了波纹,从而简化软件的处理,软件只需要直接检测引脚的电平即可。

        从按键的原理图可知,这些按键在没有被按下的时候,GPIO引脚的输入状态为低电平(按键所在的电路不通,引脚接地),当按键按下时, GPIO引脚的输入状态为高电平(按键所在的电路导通,引脚接到电源)。只要我们检测引脚的输入电平,即可判断按键是否被按下。

        若您使用的实验板按键的连接方式或引脚不一样,只需根据我们的工程修改引脚即可,程序的控制原理相同。

2 软件设计

2.1 按键输入检测方式

        按键输入检测方式分为定时扫描和外部中断两种,工作原理和优缺点如下文所示。本篇我们主要讲解用外部中断的方式进行按键输入检测。

2.1.1 按键扫描

工作原理:通过 CPU 定时或不断地读取按键所连接的 GPIO 引脚电平状态,来判断按键是否被按下。比如在一个循环中,反复检测按键对应的引脚是高电平还是低电平 ,若原本是高电平,检测到变为低电平,且经过消抖处理(一般通过延时,比如 5~10ms 再次检测确认)后还是低电平,就认为按键被按下;松开时则相反。像独立按键扫描,就是单独检测每个按键引脚;矩阵按键扫描则是按行或列扫描,通过行列交叉点判断哪个按键动作 。

优点:

  • 原理简单易懂,实现起来相对容易,对于初学者友好。
  • 可灵活控制扫描频率和时机,在一些对按键检测实时性要求不高,且系统资源较为充裕的场景下,能很好地工作。

缺点:

  • 占用 CPU 资源,CPU 需要不断执行扫描程序来检测按键状态,若系统中还有其他任务,会影响整体运行效率。
  • 实时性较差,因为是定时或不断扫描,不能及时响应按键动作,存在检测延迟。

2.1.2 外部中断

工作原理:当外部事件发生,比如按键按下使连接到单片机的外部中断引脚上电平发生变化(可配置为上升沿触发、下降沿触发或双边沿触发 ),单片机的中断系统会迫使 CPU 暂停正在执行的程序,转而去执行预先编写好的中断服务程序来处理该事件,处理完后再返回原来中断的地方继续执行原程序 。以按键为例,按键连接到外部中断引脚,按下按键产生电平变化,触发中断请求,CPU 响应后进入中断服务函数处理按键事件。

优点:

  • 实时性强,能在外部事件发生的瞬间及时响应,快速处理事件,适用于对实时性要求高的场景,如工业控制中对突发信号的快速响应。
  • 节省 CPU 资源,CPU 不需要一直轮询检测按键状态,只有在外部事件触发中断时才会处理相关事务,提高了 CPU 使用效率。

缺点:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值