linux gpio中断程序,【嵌入式Linux驱动开发】十三、GPIO按键中断驱动程序编写

本文档介绍了如何在Linux下编写GPIO按键中断驱动程序,包括设备树配置、中断处理函数的编写,以及中断申请的过程。通过实例展示了从设备树获取GPIO、转换为中断号并请求中断的具体步骤。
摘要由CSDN通过智能技术生成

这个世界是由概率学统治的,所以每一个成功的人,都应该心怀疚歉和感恩,致敬和他们一样野心聪明勤奋坚持,却没有得到概率女神青睐的人们。

文章目录

零、写在前面的话

一、按键驱动框架

1.1 LED驱动回顾

1.2 按键驱动编写思路

二、编程

2.1 设备树相关

2.1.1 编写设备树

2.2 驱动代码相关

2.2.1 编写驱动程序

零、写在前面的话

停更的这段时间,一直在快马加鞭的干毕设论文,初稿最近刚完成,还需要再完善。毕业前的最后一岗,希望自己依然可以站的完美。停更的期间,博客访问量也在下降,不知道能不能实现毕业前100w的愿望了。

在上一节,我们详细学习了《Linux开发中的中断》,这一节我们我们就来实际操练一下!

在实际开发中,对于GPIO按键,我们并不需要去写驱动程序,使用内核自带的驱动程序

drivers/input/keyboard/gpio_keys.c 就可以,实际需要做的只是修改设备树指定引脚及键值。

但是学习还是要从头写按键驱动,特别是如何使用中断。因为中断是引入其他基础知识的前提,后面的内容都离不开中断:休眠-唤醒、 POLL 机制、异步通知、定时器、中断的线程化处理。这些基础知识是更复杂的驱动程序的基础要素,以后的复杂驱动也就是对硬件操作的封装彼此不同,但是用到的基础编程知识是一样的。

一、按键驱动框架

1.1 LED驱动回顾

对于 LED, APP 调用 open 函数导致驱动程序的 led_open 函数被调用。在里面,把 GPIO配置为输出引脚。安装驱动程序后并不意味着会使用对应的硬件,而 APP 要使用对应的硬件,必须先调用 open 函数。所以建议在驱动程序的 open 函数中去设置引脚。

APP 继续调用 write 函数传入数值, 在驱动程序的 led_write 函数根据该数值去设置 GPIO的数据寄存器,从而控制 GPIO 的输出电平。

怎么操作寄存器?从芯片手册得到对应寄存器的物理地址,在驱动程序中使用 ioremap函数映射得到虚拟地址。驱动程序中使用虚拟地址去访问寄存器。

62ed167c0f58b795a1aacfc737105f9f.png

1.2 按键驱动编写思路

编写按键驱动最简单的方法 - 查询方式

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值