1. 程式人生 > 實用技巧 >009_Linux驅動之_request_irq()函式

009_Linux驅動之_request_irq()函式

1. request_irq()函式原型

intrequest_irq(unsigned intirq, irq_handler_thandler,

unsigned longirqflags, 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