Linux外部中断的驱动初始化

外部中断的驱动初始化时应该完成以下几个步骤: 1.把对应的引脚设置成中断功能 2.设置中断类型(IRQ或者FIQ) 3.设置触发方式 4.使能此中断 设置触发方式的函数接口 int set_irq_type(unsigned int irq, unsigned int type); 中断pending寄存器,主要是用来标识哪个中断产生了.

在编写驱动时有关中断的操作是经常要用到的,内核驱动中已经编写了一些中断配置函数可以方便的供使用,其与gpio操作配置函数配合使用效果更好。void disable_irq(unsigned int); //关闭相应中断号中断void enable_irq(unsigned int);//开启相应中断号中断int set_irq_type(unsigned int irq, unsigned int type);//设置中断为何种触发模式void disable_irq_wake(unsigned int irq); //禁止中断唤醒功能void enable_irq_wake(unsigned int irq);//使能中断唤醒功能

local_irq_disable() , local_irq_enable() , local_irq_save() 和 local_irq_restore() 为中断处理函数,主要是在要进入临界区时禁止中断和在出临界区时使能中断。local_irq_disable() 和 local_irq_enable() 配对使用;而 local_irq_save() 则和 local_irq_restore() 配对使用。local_irq_disable() 和 local_irq_save() 都可以禁止中断,,但不同的是后者可以保存中断状态。local_irq_restore() 在使能中断的同时还恢复了由 local_irq_save() 所保存的中断状态。

坚硬的城市里没有柔软的爱情,生活不是林黛玉,

Linux外部中断的驱动初始化

相关文章:

你感兴趣的文章:

标签云: