1. 中断
先申请中断号
irqno = get_irqno_from_node();
在申请中断
request_irq(irqno, key_irq_handler, IRQF_TRIGGER_FALLING|IRQF_TRIGGER_RISING,"key3_eint10", NULL);
2. 中断驱动,加入字符框架后,出现空指针NULL pointer问题
Unable to handle kernel NULL pointer dereference at virtual address 00000000
![](https://i-blog.csdnimg.cn/blog_migrate/368cab2ea930d51f605b03c6d9879900.png)
先看request_irq函数原型:
static inline int __must_check
request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,
const char *name, void *dev)
{
return request_threaded_irq(irq, handler, NULL, flags, name, dev);
}
可以看到,request_irq()也是调用了另外一个函数,request_threaded_irq(),在这个函数的描述中有下面的文字