009_Linux驅動之_request_irq()函數


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM