2440有60個中斷源(有的中斷源還有幾個子中斷源),中斷原理如下圖:
中斷源使中斷源請求寄存器(SRCPND)的相應位置一,中斷模式寄存器(INTMOD)選擇是IRQ還是FIQ模式,如果是IRQ,在中斷屏蔽寄存器(INTMSK)不屏蔽的情況下,會產生中斷,同時中斷請求寄存器(INTPND)的相應位被置一。
2440 外部中斷 編程步驟:
外部中斷初始化()
{
引腳初始化: 設置相應引腳為外部中斷功能 GPxCON
選擇相應觸發模式 EXTINT
中斷初始化: 清除SRCPNF、INTPND中的相應中斷標志位
中斷例程地址 -> 中斷向量表 pISR_EINTx
使能相應中斷 rINTMSK
}
中斷例程() __irq
{
……中斷程序……
清除SRCPNF(先)、INTPND(后)中的相應中斷標志位
}
這是一個外部中斷0的實驗程序(GPF0作外部中斷源):
//********************************************************************
void Main(void)
{
int i;
……硬件初始化……
Eint0_init();
while(1);
}
void Eint0_init(void) //EINT0初始化
{
Uart_Printf("n外部中斷實驗:Eint0n");
rGPFCON = rGPFCON & ~7 | 2 ; //設置GPF0 為 外部中斷模式
rEXTINT0 = rEXTINT0 & ~7 | 2 ;//設置EINT0 為 下降沿觸發
rSRCPND = 1; //SRCPND寫1清0
rINTPND = 1; //INTPND寫1清0
pISR_EINT0 = (U32)Eint0_ISR; //向向量表申請中斷向量
rINTMSK = rINTMSK & ~(1); //禁止EINT0的屏蔽
}
void Eint0_ISR(void) __irq //EINT0中斷例程
{
Uart_Printf("你按了一次Eint0引腳的按鍵n");
rSRCPND = 1; //清楚EINT0中斷標志
rINTPND = 1;
}
//*******************************************************************
運行結果如圖:
注意中斷標志的清除順序:SUBSRCPND(如果有)->SRCPND->INTPND ,如果不這樣做,中斷例程結束后,還會再次引起額外的中斷
注意 pISR_EINT0 = (U32)Eint0_ISR;每一個中斷例程運行之前,都要把它的地址交給中斷向量表(此指60個中斷源的eboot中斷向量表,非地址0處的異常中斷向量表,IRQ發生時,PC先指向異常中斷向量表的IRQ位置,再跳轉到eboot中斷向量表),以在中斷發生時,正確進入相應的中斷例程,其實是把INTOFFSET中的中斷號轉換成(在eboot中斷向量表的)偏移地址。
外部中斷又24個,但不都是一致的,如下圖:
EINT0、EINT1、EINT2、EINT3是四個獨立的中斷源,而EINT4~7組成一個中斷源,EINT8~23組成一個中斷源。
那么EINT4~7的中斷程序如何寫,顯然不能用EINT0的方式,不然EINT4~EINT7的四個源相互之間無法被區分開,EINT8~23也同理。
所以為了區分它們,要用到EINTMASK和EINTPEND,EINTMASK每一位對應EINT4~EINT23的屏蔽,其他位保留;EINTPEND每一位對應EINT4~EINT23的中斷請求,其他位保留;這樣就可以順利區分EINT4~EINT23了。
下面是Eint2和Eint11的中斷程序
//********************************************************************
void Main(void)
{
int i;
……硬件初始化……
Uart_Printf("n外部中斷實驗:Eint2 和 Eint8_23n");
Eint2_init();
Eint8_23_init(); //EINT11初始化
while(1);
}
void Eint2_init(void) //EINT2初始化
{
rGPFCON = rGPFCON & ~3<<4 | 2<<4 ; //設置GPF2 為 外部中斷模式
rEXTINT0 = rEXTINT0 & ~7<<8 | 4<<8 ;//設置EINT2 為 上升沿觸發
rSRCPND = 1<<2; //SRCPND寫1清0
rINTPND = 1<<2; //INTPND寫1清0
pISR_EINT2 = (U32)Eint2_ISR; //填入Eint2的中斷向量
rINTMSK = rINTMSK & ~(1<<2); //禁止EINT2的屏蔽
}
void Eint2_ISR(void) __irq //EINT2中斷例程
{
Uart_Printf("你按了一次Eint2引腳的按鍵n");
rSRCPND = 1<<2; //清楚EINT2中斷標志
rINTPND = 1<<2;
}
void Eint8_23_init(void) //Eint8_23初始化
{
rGPGCON = rGPGCON & ~3<<6 | 2<<6 ; //設置GPG3 為 外部中斷模式
rEXTINT1 = rEXTINT1 & ~7<<12 | 2<<12 ;//設置EINT11 為 下降沿觸發
rEINTPEND = 1<<11; //***EINTPEND中的 EINT11位 清0
rSRCPND = 1<<5; //SRCPND中的 Eint8_23位 清0
rINTPND = 1<<5; //INTPND中的 Eint8_23位 清0
pISR_EINT8_23 = (U32)Eint8_23_ISR; //填入Eint8_23的中斷向量
rEINTMASK = rEINTMASK & ~(1<<11); //***禁止EINT11的屏蔽
rINTMSK = rINTMSK & ~(1<<5); //禁止Eint8_23的屏蔽
}
void Eint8_23_ISR(void) __irq //EINT2中斷例程
{
Uart_Printf("你按了一次Eint8_23引腳的按鍵n");
rEINTPEND = 1<<11; //***EINTPEND中的 EINT11位 清0
rSRCPND = 1<<5; //SRCPND中的 Eint8_23位 清0
rINTPND = 1<<5; //INTPND中的 Eint8_23位 清0
}
//*******************************************************************
結果如下:
上一篇:S3C2410啟動代碼從ADSv1.2移植到KEIL For ARM uV4的方法
下一篇:2440裸機編程之三 通用I/O口
推薦閱讀
史海拾趣
近年來,電子行業面臨著技術升級、市場變革等多重挑戰。AMICC積極應對這些挑戰,不斷調整戰略和業務模式。公司加大了對新興技術的研發投入,加快了產品更新換代的速度。同時,AMICC還加強了與產業鏈上下游企業的合作,共同應對市場變化。這些措施使AMICC在行業中保持了領先地位,實現了持續穩健的發展。
隨著業務的不斷拓展,CANOPUS開始專注于鼓的制造研究。在1984年,公司推出了其標志性產品——整木掏空櫸木軍鼓。這款鼓的獨特之處在于其鼓腔是由整個樹干挖空處理而成,導角也做了特有的設計。這一創新使得CANOPUS的鼓在音質和外觀上都與眾不同,迅速在市場上獲得了認可。
面對日益激烈的市場競爭,Apx-Crystal公司意識到單憑自身的力量難以保持長期的競爭優勢。于是,公司積極尋求與行業內外的合作伙伴進行技術交流和合作研發。通過與知名高校、科研機構以及同行的緊密合作,Apx-Crystal成功開發出了一系列具有創新性和領先性的電子產品,進一步鞏固了其在行業內的領先地位。同時,公司還加大了對產業鏈的整合力度,推動了產業升級和可持續發展。
君耀(Brightking)公司于1996年在臺灣新竹高科技園區創立,初期專注于防雷元器件的研發和生產。憑借對技術的深入研究和市場需求的敏銳洞察,君耀逐步在臺灣的電子器件市場上占得一席之地。隨著產品質量和技術含量的提升,君耀的產品開始受到國內外客戶的青睞,銷售網絡逐漸拓展至全球。
在過去的30年里,All Sensors一直致力于為OEM客戶設計定制各種經典的傳感器。這些傳感器不僅具有高精度、高可靠性和高靈敏度,還廣泛應用于航天航空、醫療設備、環保儀器等多個領域。憑借卓越的產品性能,All Sensors的部分經典產品甚至被業界某大公司收購并發揚光大,進一步擴大了其在電子行業的影響力。
電連技術股份有限公司(ECT)于2006年在深圳成立,專注于微型電子連接器及互連系統相關產品的技術研究、設計、制造和銷售服務。在成立初期,ECT便憑借其高可靠、高性能的產品設計制造能力,在通訊設備、智能消費電子等領域獲得了初步的市場份額。公司團隊通過不斷的技術創新和產品優化,逐漸在行業內樹立了良好的口碑。
團隊介紹: 深圳無線互聯技術是一個專業從事基于無線通信和嵌入式系統的軟硬件產品研發和相關技術咨詢服務的高科技 團隊,主要產品線涉及到嵌入式系統、無線數傳模塊、Zigbee無線傳感網絡、無線三表抄表、礦井人員定位、無線數據采 集、安全監控、 ...… 查看全部問答∨ |
|
大家好,小弟還是個學生,想學PLD,又沒錢買昂貴的編程器,我想問一下如何給MAX7000S系列下載程序?是用并口isp下載線?像最簡單的EPM7032SLC44-10引腳該如何連?用什么軟件下載?那位懂得來詳細說一下,萬分感謝!!!!… 查看全部問答∨ |
|
LED面板燈由于有著許多優點,現今已經被越來越多的應用于人們的生活中,它不僅可以用來當作日常的照明工具,同時還可以作為裝飾品為建筑增添特別的意義。LED面板燈具有高效、節能、環保的產品特性,而且它的壽命也比普通照明燈具要長很多 ...… 查看全部問答∨ |
|
我拿到一個原理圖,里面電源芯片的輸出端用了一個電感,220uH 1)我查了這個電源芯片的輸出能力是3A,于是去查VISHAY的電感器產品,發現一般的“表貼電感”,220uH下沒有那么大的工作電流。然后我查了“濾波線圈”,發現有220uH,3A的,但是濾波線 ...… 查看全部問答∨ |
參考前人的文章,仿照著用Launchpad和NRF24L01做了一個無線溫度的發射端。之前沒有用低功耗設計,現在使用定時器定時,在中斷中讀取溫度并發送。 目前的狀態是使用紅燈來指示程序運行,綠燈指示發送成功。紅燈做Toggle,綠燈就閃一下。大概一秒鐘 ...… 查看全部問答∨ |
[7月11日,北京站] 2013 TI 多核DSP研討會火熱報名中 德州儀器 (TI) TMS320C66x 針對眾多高性能市場進行了優化,可充分滿足通信與網絡、工業自動化、醫療影像、關鍵性任務、視頻基礎架構以及高性能計算等應用需求。圍繞 KeyStone C66x系列, 2013 TI 多核 DSP 技術研討會即將在北京 (7月11日) 召開, ...… 查看全部問答∨ |
出9成新SATA品牌焊臺,數顯,恒溫,無鉛,原價1000多,400出 本帖最后由 ddllxxrr 于 2016-1-7 16:33 編輯 1、高頻渦流發熱,升降溫速度快 2、特殊的傳感器設計,保證快速響應,調溫快捷 3、精確地溫控電路,溫度控制在±2°C 4、自動休眠,節能有延長壽命 5、ESD靜電拆消設計,滿足防靜電工作需求 有意 ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 顛覆iToF技術,安森美如何突破30米深度感知極限?
- 利用驗證框架 JAIST揭示開源自動駕駛系統的安全漏洞
- 現代汽車集團擬采用VR模擬器替代道路測試 提升未來車型的競爭力
- 研究人員開發光驅動致動器 可用于驅動水下機器人
- 吉利將發射“千里浩瀚”衛星,實現輔助駕駛系統與衛星功能深度融合
- 以鴻道工業操作系統為核心 打造工業智能機器人新生態
- UNIST研發出新表面處理技術 延長下一代鋰金屬電池的壽命
- 車載SerDes芯片行業的"DeepSeek"時刻——瑞發科HSMT SerDes閃耀2025上海車展
- 豐田顛覆傳統,固態電池明年就能量產,最受傷的將是中國?
- 基于恩智浦與onsemi的駕駛員監控系統方案