1. request_irq()函数原型

int request_irq(unsigned int irq, irq_handler_t handler,
unsigned long irqflags, const char *devname, void *dev_id)
 
2. 

功能:注册中断服务函数

* @irq:要申请的硬件中断号

* @handler: IRQ发生时要调用的函数

* @irqflags:中断类型标志

* @devname:声明设备的ascii名称

* @dev_id:传递回处理器函数的cookie。中断和卸载的时候用到

 
3. 使用示例:

4. 解析上面程序

1. 上面程序是按键中断程序,中断号对应引脚上面的中断号,具体可以查芯片手册上面有
2. 中断函数是buttons_irq(),当出现按键按下或者松开时候调用buttons_irq()函数,并传
入参数irq和dev_id
3. IRQT_BOTHEDGE是双边沿触发方式,当有按键按下或者松开时候就触发中断
4. 名字是S2-S4,需要时ascii名称
5. 当中断发生或者卸载时候,需要用到dev_id的地址
 
5. 使用free_irq()函数来释放已经注册的中断
函数原型:void free_irq(unsigned int irq, void *dev_id)
解析:需要用到中断号irq和dev_id
使用示例:释放上面注册了的中断
6. 触发方式
1. IRQT_NOEDGE
2. IRQT_RISING//上升沿触发
3. IRQT_FALLING //下降沿触发
4. IRQT_BOTHEDGE//双边沿触发
5. IRQT_LOW//低电平触发
6. IRQT_HIGH//高电平触发
7. IRQT_PROBE

009_Linux驱动之_request_irq()函数的更多相关文章

  1. module_init宏解析 linux驱动的入口函数module_init的加载和释放

    linux驱动的入口函数module_init的加载和释放 http://blog.csdn.net/zhandoushi1982/article/details/4927579 void free_ ...

  2. platform驱动之probe函数

    驱动注册的probe函数 probe函数在设备驱动注册最后收尾工作,当设备的device 和其对应的driver 在总线上完成配对之后,系统就调用platform设备的probe函数完成驱动注册最后工 ...

  3. linux驱动的入口函数module_init的加载和释放【转】

    本文转载自:http://blog.csdn.net/zhandoushi1982/article/details/4927579 就像你写C程序需要包含C库的头文件那样,Linux内核编程也需要包含 ...

  4. USB 驱动之 usb_register 函数解析

    前段时间在kernel 添加了 USB to LAN 模块 AX88772B 的驱动. 根据相关添加解析一下 usb_register_driver 函数 drivers/net/usb/asix.c ...

  5. 005_linux驱动之_class_device_create函数

    (一)解析class_device_create函数   (二)当我们使用class_create创建一个类之后我们就可以使用class_device_create函数在这个类下面创建一个设备了,cl ...

  6. 006_linux驱动之_ioremap函数使用

    (一)学习linux驱动之初,对ioremap函数的个人理解 (二)博客:实验探究 ioremap 这篇文章作者通过验证来阐述自己的观点,个人觉得挺好的 (三)函数原型 基本简介 void * __i ...

  7. 003_linux驱动之_file_operations函数

    (一)解析file_operations函数 解析002_linux驱动之_register_chrdev注册字符设备中的问题 (二) 1. file_operations结构原型 2. 使用举例   ...

  8. linux 内核(驱动)常用函数

    2.4.1 内存申请和释放 include/linux/kernel.h里声明了kmalloc()和kfree().用于在内核模式下申请和释放内存.    void *kmalloc(unsigned ...

  9. 010_Linux驱动之_DECLARE_WAIT_QUEUE_HEAD函数

    1. 功能:创建以个等待队列头 2. 函数原型 #define DECLARE_WAIT_QUEUE_HEAD (name)                            /     wait ...

随机推荐

  1. GC(Garbage Collection)

    GC(Garbage Collection) GC背景 ​  创建对象会消耗内存,如果不回收对象占用的内存,内存使用率会越来越高,最终出现OutOfMemoryError(OOM) ​  在C++中专 ...

  2. 使用网关zuul过滤器登录鉴权

    使用网关zuul过滤器登录鉴权     1.新建一个filter包         filte有很多种 pre.post.     2.新建一个类LoginFilter,实现ZuulFilter,重写 ...

  3. Django Simple Captcha的使用

    Django Simple Captcha的使用 1.下载Django Simple Captcha django-simple-captcha官方文档地址 http://django-simple- ...

  4. 如何将 HTML 转换为 XHTML

    1.添加一个 XHTML <!DOCTYPE> 到你的网页中 2.添加 xmlns 属性添加到每个页面的html元素中 3.改变所有的元素为小写 4.关闭所有的空元素 5.修改所有的属性名 ...

  5. access 数据库创建表SQL语法

    create table R_CAIFA_B13 ( ID AUTOINCREMENT PRIMARY KEY, XB varchar(255), C1 varchar(50), C2 varchar ...

  6. Post请求数据传到后台+号变成了空格

    问题: 今天遇到一个问题:页面带有"+"号的数据,传到服务端接口,结果+号变成了空格.例如:传“1+1”变成了"1 1". 解决办法: 方案一: 将“+”号替换 ...

  7. c#基础知识梳理(二)

    上期回顾 - https://www.cnblogs.com/liu-jinxin/p/10818256.html 一.变量 一个变量只不过是一个供程序操作的存储区的名字.在 C# 中,每个变量都有一 ...

  8. Keras 笔记

    1. 从 meta 模型恢复graph,   修改node  并保存 from __future__ import absolute_import from __future__ import div ...

  9. class类 - extends

    继承是面向对象中一个比较核心的概念.ES6 class的继承与java的继承大同小异,如果学过java的小伙伴应该很容易理解,都是通过extends关键字继承.相较于ES5当中通过原型链继承要清晰和方 ...

  10. C++ 获取对象类型

    在入门C++过程中,我们经常会遇到无法判断对象类型的情况. 头文件( VS编译器 ) #include <typeinfo> typeid(对象).name(); 例子: , &b ...