009_Linux驅動之_request_irq()函式
阿新 • • 發佈:2020-10-13
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