• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

Linux下如何高效扫按键

_落雪千寒灬 2020-01-03 浏览量:756

按键功能一般对实时性要求毕竟高 扫描多个按键会比较占系统资源

在使用HC165读按键行 和HC139选按键列 的16*4的矩阵键盘下

在使用单片机裸机时一般是通过 定时器进行周期循环读取按键值 

定时器中断周期在10ms左右 在接上旋转编码器时 还要用到更短的读取时间定时器中断周期1ms

在Linux下如何进行按键扫描 用哪种方式 能保证效率和 实时性呢?

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 可以使用专用的按键芯片,通过SPI读取给Linux识别。

    如果是使用IO口的话,驱动不好写,应用也处理复杂

    • 发布于 2020-01-03
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:3
  • 在linux内核源代码中,有按键的处理代码,具体位置在drivers/input/keyboard/ 下面。

    按键有两种情况,独立按键和矩阵键盘。这两种情况,内核中都有考虑,

    GPIO 独立按键是 gpio_keys.c

    GPIO 矩阵键盘是 matrix_keypad.c

    可以参考该方案进行矩阵键盘扫描。

    或者可以使用类似PCA9555D这种IIC转IO,可以把所有矩阵键盘操作通过IIC接口来实现,既节省IO,也方便操作。

    • 发布于2020-01-03
    • 举报
    • 评论 0
    • 0
    • 0

  • Linux下要使用设备驱动文件来进行驱动,并不可以像裸机时那样驱动了,要写Linux的驱动程序才可以
    • 发布于2020-01-03
    • 举报
    • 评论 0
    • 0
    • 0

  • Linux下面一般会找个I2C扩展的按键扫描芯片,比如ZLG7290这种,由这个芯片来完成轮询的过程

    如果非要由主CPU完成,那最好是在内核驱动里面,通过定时扫描来实现,用户空间的效率很低

    • 发布于2020-01-12
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

Linux下如何高效扫按键