zoukankan      html  css  js  c++  java
  • 按键

    什么是按键

    按键的物理特性

    • 平时没人按的时候,弹簧把按键按钮弹开,此时内部断开的。
    • 有人按下的时候,手的力量克服弹簧的弹力,将按钮按下,此时内部保持接通状态;如果手拿开,则弹簧作用下按钮又弹开,同时内部又断开
    • 一般的按键都有4个引脚,这4个引脚成2对:其中一对是常开触点(像上面描述的,按下则断开,按下则闭合);一对常闭触点(平时不按是闭合的,按下后是断开的)

    按键的电学原理(结合原理图分析)

    • 硬件接法:  SW5:GPH0_2  SW6:GPH0_3  SW7/8/9/10:GPH2_0/1/2/3
    • 按键的电路连接分析:平时按钮没有按下,按钮内部断开,GPIO引脚处电压为高电平,当有人按下按钮是,按钮内部导通,外部VDD经过电阻和按钮连接到地,形成回路。此时GPIO引脚处电压就变成低电平。此时VDD电压全部分压在电阻上(这个电阻就叫做分压电阻,这点点租不能太小,因为电阻的功率:U*U/R,会大量发热。)

    总结:按键的工作方法:其实就是按键的按下与弹开,分别对应GPIO的两种电平状态(按下则为低电平,弹开则GPIO为高电平)。此时SoC可以通过检测这个GPIO的电平高低,来判断按键有没有按下,这个判断结果即可作为SoC的输入信号。

    按键属于输入类设备

    按键一般用来做输入设备(由人向SoC发送信息的设备),由人向SoC发送按键信号(按键信号有2种:按下信号和弹开信号)

    有些设备就是单纯的输入设备,譬如按键触摸屏等;有些设备就是单纯的输出设备,譬如LCD;还有一些设备既能输入又能输出的,叫输入输出设备(IO),譬如串口

    按键的2种响应方法

    SoC处理按键有2种思路:轮询方式和中断方式

    • 轮询方式,就是SoC主动的每隔一段时间去读取(按键所对应的GPIO电平的高低),以此获得按键信息。

    此方法缺点在于:CPU要一直注意按键事件,会影响CPU做其他事情

    中断方式就是SoC事先设定好GPIO出发的中断处理程序,当外部按键按下或者弹开时,会自动出发GPIO对应的外部中断,导致ISR执行,从而自动处理按键信息。

    轮询方式处理按键

    X210开发板的按键接法

    • 查看原理图,找到按键对应的GPIO:SW5:GPH0_2  SW6:GPH0_3  SW7/8/9/10:GPH2_0/1/2/3

    原理图上可以看出:按下时是低电平,弹起时是高电平

    按键对应的GPIO模式设置

    • 按键接到GPIO上,按键按下还是弹起,决定外部电路的接通与否,从而决定这个GPIO引脚电压是高还是低;这个电压可以作为这个 GPIO引脚的输入信号,此时GPIO设置为输入模式,即可从SoC内部读取该引脚电平为1还是0(1对应高电平,0对应低电平)
    • GPHOCON(0xE0200C00)    GPH0DAT(0xE0200C04)   GPH2CON(0xE0200C40)   GPH2DAT(0xE0200C44)
    • 应该将CON寄存器中将GPIO设置为input模式。然后去读取DAT寄存器相应位(读取到相应位的值为1表示外部为高电平(按键弹起),读取到位为0表示外部为低电平(按键按下))

    轮询方式处理按键的程序流程

    • (1)先初始化GPIO模式位input模式;
    • (2)循环读取GPIO的电平值,然后判断有无按键按下

    代码编写和调试

    串口输出和按键消抖

    基于串口标准输出的按键调试

    • 以之前的串口stdio的工程为基础来一直添加轮询方式按键处理
    • 注意USB下载方式可能有错误(有可能不下载),解决方案就是用SD卡代替

    什么是按键消抖

    • 按键这种无理器件本身会有抖动信号,抖动信号是指电平信号由高到低(也就是按键按下时)或者电平由高到低(也就是按键弹起时)的过程中,电平的辩护啊不会死立刻变化,而是经过了一段时间的不稳定期才完成,在这个不稳定期,电平可能会时高时低,反复变化,这就叫抖动(抖动期内获取信息时不可靠的)。
    • 什么叫消抖?消抖就是用硬件或者软件方法尽量减少抖动起对按键获取的影响。
    • 消抖常见的两种思路:硬件消抖和软件消抖

    第一:硬件消抖,消抖的思路是尽量减少抖动时间,具体方法是增加一些电容原件等来消抖

    第二:软件消抖,消抖的思路是发现一次按键按下/弹起事件后,不立即处理而是延长一段时间(一般10~20ms,这就是消抖时间)后再去获取键值,如果这次键值和上次的一样那么就认为真的按下/弹起。

    一般比较精密需要的时候,需要硬件消抖和软件消抖一起配合。

    编程实战

  • 相关阅读:
    h5手机端禁止缩放问题
    element upload 一次性上传多张图片(包含自定义上传不走action)
    vue开发移动端项目 过渡动画问题
    vue中使用transition标签底部导航闪烁问题
    vue element upload图片 转换成base64
    vue项目 sockjs-node一直报错问题
    获得省市区 二级 三级 四级 五级联动数据地址
    vue项目中引入第三方框架
    element中使用button会刷新一遍页面
    [Java] 字符流 Writer,输出字符数据PrintWriter
  • 原文地址:https://www.cnblogs.com/jxjl/p/7091667.html
Copyright © 2011-2022 走看看