RK3568开发笔记-gpio-key按键驱动使用

40 篇文章 141 订阅 ¥29.90 ¥99.00

目录

前言

一、硬件连接

二、设备树配置

三、内核驱动配置

四、应用程序读取按键值

总结


前言

        在嵌入式系统开发中,GPIO(通用输入/输出)引脚常用于连接和控制外部设备,如按键。RK3568是一款强大的嵌入式处理器,本文将介绍如何使用RK3568的GPIO功能来驱动按键输入。我们将涵盖驱动程序的设置和配置,通过自定义按键key值,当按键被按下时,用户应用程序可以捕捉到上报的键值,从而实现按键检测操作。


提示:以下是本篇文章正文内容,下面案例可供参考

一、硬件连接

        如下我们使用5个按键分别接到RK3568-GPIO2 bank的io管脚,分别对应F1~F5按键,具体连接如下图所示:

二、设备树配置

        五个按键设置按键键值分别为KEY_F1~KEY_F5,对应值为59~63,linux内核定义按键键值在/kernel/include/uapi/linux/in

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
GPIO按键中断注册函数可以使用Linux内核提供的gpio_keys_button驱动来实现。这个驱动可以将一个GPIO引脚配置为按键输入,并且在按键按下和松开时触发中断,以便应用程序能够检测到按键事件。 下面是一个示例代码,演示如何使用gpio_keys_button驱动注册GPIO按键中断: ```c #include <linux/input.h> #include <linux/gpio_keys.h> #define KEY_GPIO 17 static struct gpio_keys_button gpio_button = { .type = EV_KEY, .code = KEY_ENTER, .gpio = KEY_GPIO, .active_low = 1, .desc = "gpio_button", }; static int __init gpio_button_init(void) { int ret; ret = gpio_request(KEY_GPIO, "gpio_button"); if (ret) { printk(KERN_ERR "Failed to request gpio %d: %d\n", KEY_GPIO, ret); return ret; } ret = gpio_direction_input(KEY_GPIO); if (ret) { printk(KERN_ERR "Failed to set direction of gpio %d: %d\n", KEY_GPIO, ret); gpio_free(KEY_GPIO); return ret; } ret = gpio_keys_button_register(&gpio_button); if (ret) { printk(KERN_ERR "Failed to register gpio button: %d\n", ret); gpio_free(KEY_GPIO); return ret; } return 0; } static void __exit gpio_button_exit(void) { gpio_keys_button_unregister(&gpio_button); gpio_free(KEY_GPIO); } module_init(gpio_button_init); module_exit(gpio_button_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Your Name"); MODULE_DESCRIPTION("GPIO Button Interrupt Driver"); ``` 在这个示例代码中,我们定义了一个名为gpio_button的struct gpio_keys_button结构体,其中type和code字段指定了按键事件的类型和代码,gpio字段指定了GPIO引脚的编号,active_low字段指定了按键是否使用低电平触发,desc字段是一个描述字符串,用于标识这个按键。 接下来,在gpio_button_init函数中,我们首先请求GPIO引脚,然后设置它为输入模式。最后,我们调用gpio_keys_button_register函数注册这个GPIO按键中断。 最后,在gpio_button_exit函数中,我们注销这个GPIO按键中断,并释放GPIO引脚。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flypig哗啦啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值