Linux驱动

L17. 按键标准驱动使用实例

2020-09-03  本文已影响0人  开源519

1. 简介

在学习字符驱动的过程中,实现过按键驱动。实现功能:按键在按下时,会触发中断然后给应用层上报按键的状态。
像按键这种通用性驱动,linux也有提供标准的驱动(gpio_keys.c)。本篇文章主要记录如何使用此驱动。

2.代码

要用到的内核代码路径: driver/input/keyboard/gpio_keys.c。

/* driver/input/keyboard/Makefile */

obj-$(CONFIG_KEYBOARD_GPIO)     += gpio_keys.o

/* arch/arm/config/[target_name]_defconfig */
CONFIG_KEYBOARD_GPIO=y
/* include/dt-bindings/input/linux-event-codes.h */
#define KEY_1           2

/* arch/arm/boot/dts/[target_name].dts */
    gpio-keys {
        compatible = "gpio-keys";

        user {
            label = "User Button";
            gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;
            gpio-key,wakeup;
            linux,code = <KEY_1>;
        };
    };

3.测试

将源码设备树编译完后,烧录到开发板,然后测试效果

介绍一下原始数据意义:
[1 - 4 byte] : 秒
[5 - 8 byte] : 微妙
[9 -10 byte] : 事件数据
[11-12 byte] : 键值
[13-16 byte] : 按下和松开状态
上图框住的按下框内:
第一行表示 : 上报按键事件的数据
第二行表示 : 上报同步事件的数据

上一篇 下一篇

猜你喜欢

热点阅读