歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux外部中斷的驅動初始化

Linux外部中斷的驅動初始化

日期:2017/2/28 15:46:41   编辑: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() 所保存的中斷狀態。

Copyright © Linux教程網 All Rights Reserved