按键中断驱动)"/>
从零开始之驱动发开、linux驱动(十二、字符驱动之按键中断驱动)
前面几节我简要分析了linux中的异常的初始化以及调用流程。
详细分析了中断向量表的搬移,中断的初始化流程,中断注册,以及中断发生后的调用流程。
本节就使用一下中断。
下面先看一下源码。
#include <linux/fs.h> /* 包含file_operation结构体 */
#include <linux/init.h> /* 包含module_init module_exit */
#include <linux/module.h> /* 包含LICENSE的宏 */
#include <asm/uaccess.h>
#include <linux/io.h>
#include <linux/device.h>
#include <linux/gpio.h>
#include <mach/gpio.h>
#include <asm/gpio.h>
#include <linux/gfp.h>
#include <linux/interrupt.h>static unsigned int major;
static struct class *third_class;
static struct device *third_dev;/* 自定义的中断处理函数 */
static irqreturn_t irq_handler(int irq, void *dev_id)
{printk(KERN_INFO"irq_handler %d\n", irq);return IRQ_HANDLED;
}/* 打开设备 */
static int third_drv_open(struct inode *inode, struct file *file)
{int ret = 0;/* 申请中断,我们的是外部中断,触发方式是上
更多推荐
从零开始之驱动发开、linux驱动(十二、字符驱动之按键中断驱动)
发布评论