日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]S3C2440A中的中斷控制器接受來自60個中斷源的請求。提供這些中斷源的是內(nèi)部外設(shè),如DMA控制器、UART、IIC等等。在這些中斷源中,UARTn、AC97和EINTn中斷對于中斷控制器而言是“或”關(guān)系。任意一個中斷發(fā)生都會觸發(fā)總

S3C2440A中的中斷控制器接受來自60個中斷源的請求。提供這些中斷源的是內(nèi)部外設(shè),如DMA控制器、UART、IIC等等。在這些中斷源中,UARTn、AC97和EINTn中斷對于中斷控制器而言是“或”關(guān)系。任意一個中斷發(fā)生都會觸發(fā)總中斷

當(dāng)從內(nèi)部外設(shè)和外部中斷請求引腳收到多個中斷請求時,中斷控制器在仲裁步驟后請求ARM920T內(nèi)核的FIQ或IRQ。

仲裁步驟由硬件優(yōu)先級邏輯決定并且寫入結(jié)果到幫助用戶通告是各種中斷源中的哪個中斷發(fā)生了的中斷掛起寄存器中。


中斷源有兩種,一種是直接中斷源,比如觸摸屏中斷,還有一種是帶子中斷的中斷,類似于串口帶有子終端入RXTX中斷,通過SUBMASK也就是中斷允許之后掛起到系統(tǒng),系統(tǒng)根據(jù)用戶設(shè)置確定是否響應(yīng)該中斷,然后依靠優(yōu)先級分批響應(yīng),中斷優(yōu)先級依靠硬件決定

至于中斷的處理過程,在解析啟動代碼的時候有講到,請自行查閱

下面以按鍵的外部中斷為例講解中斷的使用方法

1.首先,要使用外部中斷需要在rGPXCON里面將引腳模式設(shè)置為中斷功能,對應(yīng)是0x10

2.需要在對應(yīng)的寄存器中設(shè)置中斷觸發(fā)模式(EXINTx),例如GPF7中斷,關(guān)聯(lián)的中斷引腳是EINT7,而EINT7是屬于EXTINT0的,如下


所以對EXTINT0賦值選擇相應(yīng)中斷觸發(fā)模式

3.此時,中斷還不能被觸發(fā),因為還沒有設(shè)置上圖的MASK,mode,接下來在INTMOD中選擇中斷屬于那個分組,如下



一般選擇為IRQ中斷,關(guān)于FIQ中斷相關(guān)資料后期說明

4.接下來使能相關(guān)的中斷服務(wù),寄存器為INTMSK





5.現(xiàn)在就可以進(jìn)行中斷了,但是為了保險起見,再打開中斷之前最好將中斷標(biāo)志位都清除掉,中斷標(biāo)志位有兩個,兩個系統(tǒng)級一個子中斷級,系統(tǒng)級里面分別是SRCPND和INTPND

子中斷的意思就是現(xiàn)在開的中斷代表EINT4-7那到底是哪一個還能確定,依靠INTPEND



注意,只有多個中斷公用一個通道的時候才有這個,比如EINT0-3是獨(dú)立中斷,直接在系統(tǒng)中斷寄存器里面清除就好了

最后,開啟中斷



同樣,這個也是多個中斷公用通道的時候使用

另外,針對外部中斷可以設(shè)置濾波過程,請查閱手冊

現(xiàn)在我們來看,差不多的對應(yīng)關(guān)系是

EINTMASK , ---------------------------SUBMASK子中斷開關(guān)

INTMASK-----------------------------MASK總中斷開關(guān)

INTMODE-------------------------------MODE模式開關(guān)

SPRPND-----------------------------源掛起標(biāo)志

INTPND----------------------------中斷請求標(biāo)志

EINTPEND----------------------子中斷掛起

當(dāng)一個通道對應(yīng)多個中斷的時候要依靠子中斷掛起來判定到底是哪一個中斷發(fā)生了

以下是按鍵中斷代碼

Exit.c

#include"exti.h"http://按鍵中斷處理函數(shù)void__irqIRQ_KEY1(void){rSRCPND"=(1<<1);//清除中斷標(biāo)志位rINTPND|=(1<<1);keyValue=KEY_UP;}void__irqIRQ_KEY2(void){rSRCPND|=(1<<4);//清除中斷標(biāo)志位rINTPND|=(1<<4);if(rEINTPEND&(1<<4))//EINT4包含4-7四個中斷源{rEINTPEND|=(1<<4);//清除ENIT4的中斷標(biāo)志位keyValue=KEY_DOWN;}}void__irqIRQ_KEY3(void){rSRCPND|=(1<<2);//清除中斷標(biāo)志位rINTPND|=(1<<2);keyValue=KEY_LEFT;}void__irqIRQ_KEY4(void){rSRCPND|=1<<0;//清除中斷標(biāo)志位rINTPND|=1<<0;keyValue=KEY_RIGHT;}voidExtiInit(void){rGPFCON&=~((3<<0)|(3<<2)|(3<<4)|(3<<8));//0124清零rGPFCON|=((2<<0)|(2<<2)|(2<<4)|(2<<8));//選擇中斷復(fù)用rEXTINT0&=~((7<<0)|(7<<4)|(7<<8)|(7<<16));//清除中斷模式rEXTINT0|=((2<<0)|(2<<4)|(2<<8)|(2<<16));//選擇下降沿觸發(fā)rSRCPND|=((1<<0)|(1<<1)|(1<<2)|(1<<4));//清除中斷標(biāo)志rINTPND|=((1<<0)|(1<<1)|(1<<2)|(1<<4));//清除中斷掛起rINTMOD&=~((1<<0)|(1<<1)|(1<<2)|(1<<4));//設(shè)置中斷為IRQ中斷rINTMSK&=~((1<<0)|(1<<1)|(1<<2)|(1<<4));//去除中斷屏蔽,打開中斷rEINTPEND|=(1<<4);//EINT4中斷服務(wù)有效//對于EINT4這種帶子中斷的中斷的額外操作,清除子中斷rEINTMASK&=~(1<<4);//EINT4中斷服務(wù)有效//對于EINT4這種帶子中斷的中斷的額外操作,打開子中斷//建立中斷函數(shù)連接pISR_EINT1=(unsigned)IRQ_KEY1;//建立中斷服務(wù)函數(shù)鏈接pISR_EINT4_7=(unsigned)IRQ_KEY2;pISR_EINT2=(unsigned)IRQ_KEY3;pISR_EINT0=(unsigned)IRQ_KEY4;}


Exit.h

#ifndef__EXTI_H_#define__EXTI_H_#include"2440addr.h"#include"def.h"#include"key.h"voidExtiInit(void);//使用GPIOF0124#endif


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉