在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > LPC2000系列的向量中斷控制器(VIC)

            LPC2000系列的向量中斷控制器(VIC)

            作者: 時(shí)間:2016-11-23 來(lái)源:網(wǎng)絡(luò) 收藏
            LPC2000系列向量中斷控制器VIC)支持32個(gè)中斷請(qǐng)求輸入,也即是支持32個(gè)中斷源。這32個(gè)中斷按順序稱(chēng)為VIC通道0,VIC通道1,…,VIC通道31(實(shí)際上只使用了18個(gè)其他的預(yù)留)

            每一個(gè)VIC通道都支持軟件中斷與硬件中斷,即每個(gè)中斷均可由軟件或硬件中斷產(chǎn)生,軟件中斷與對(duì)應(yīng)通道上的硬件中斷是邏輯“或”的關(guān)系。軟件中斷可通過(guò)置位VICSoftInt寄存器相應(yīng)位來(lái)產(chǎn)生,也可通過(guò)置位VICSoftIntClear寄存器相應(yīng)位來(lái)清除。

            本文引用地址:http://www.biyoush.com/article/201611/320202.htm

            LPC2000具有3類(lèi)中斷:FIQ、向量IRQ和非向量IRQ。LPC2000系列可通過(guò)對(duì)VICIntSelect和VICVectCntlx(x=0,1,…,15)這兩類(lèi)寄存器的設(shè)置,將以上的32個(gè)中斷源設(shè)置為FIQ和IRQ中斷的任何一種(向量IRQ和非向量IRQ和在一起)。其中,快速中斷請(qǐng)求FIQ具有最高優(yōu)先級(jí)。建議只分配一個(gè)中斷請(qǐng)求給FIQ以減少中斷處理程序的延遲。當(dāng)然,VIC支持多個(gè)FIQ中斷。

            向量IRQ具有中等優(yōu)先級(jí)。該級(jí)別最多可分配32個(gè)請(qǐng)求中的16個(gè)。32個(gè)請(qǐng)求中的任何一個(gè)都可以分配到16個(gè)向量IRQslot中的任意一個(gè)。其中,slot0具有最高優(yōu)先級(jí),而slot15則為最低優(yōu)先級(jí)。

            非向量IRQ具有最低優(yōu)先級(jí)。一般也只分配一個(gè)中斷源。

            VIC中斷設(shè)置步驟:

            在主程序中:

            1、設(shè)置VICIntSelect

            通過(guò)VICIntSelect中斷選擇寄存器將32個(gè)中斷請(qǐng)求分配為FIQ或IRQ(包括向量IRQ與非向量IRQ)

            相應(yīng)位為1是FIQ,為0是IRQ。

            例如:VICIntSelect = 0x00000000,設(shè)置所有中斷都是IRQ

            2、設(shè)置VICVectCntlx(僅對(duì)于IRQ,F(xiàn)IQ不需要此設(shè)置)

            通過(guò)VICVectCntlx(x=0,1,…,15)來(lái)選擇32個(gè)中斷請(qǐng)求中的某個(gè)為向量IRQ并設(shè)定此中斷請(qǐng)求為IRQ slotx(x對(duì)應(yīng)于VICVectCntlx中的x)。若某個(gè)中斷源被設(shè)定為IRQ,但卻未通過(guò)VICVectCntlx使能,則該中斷源將被默認(rèn)為非向量IRQ。

            例如:VICVectCntl0 = 0x20 | 15,設(shè)置EINT1為向量中斷,使用Slot0。其中0x20是因?yàn)閂ICVectCntlx寄存器第六位是使能,15是通過(guò)查周立功那本書(shū)P208頁(yè)的表得到的EINT1的VIC通道號(hào)。

            3、設(shè)置VICVectAddrx(僅對(duì)于IRQ,F(xiàn)IQ不需要此設(shè)置)

            當(dāng)有IRQ中斷產(chǎn)生時(shí),VIC將會(huì)根據(jù)中斷源設(shè)置VICVectAddr寄存器為相應(yīng)中斷服務(wù)程序的地址,切換處理器工作模式為IRQ模式,并跳轉(zhuǎn)到IRQ中斷入口0x00000018處;

            異常中斷向量表中0x00000018處使用“LDR PC, [PC, #-0xFF0]”,使得程序跳轉(zhuǎn)到(0x00000018+8-0x00000FF0=0xFFFFF030)存儲(chǔ)器處保存的地址。0xFFFFF030是VICVectAddr寄存器地址。也即是說(shuō):通過(guò)該指令,程序跳轉(zhuǎn)到VICVectAddr寄存器所指向的中斷服務(wù)程序的地址。

            例如:VICVectAddr0 = (uint32)EINT1_Exception,設(shè)置EINT1中斷地址。EINT1一般是中斷服務(wù)程序函數(shù)名即服務(wù)中斷服務(wù)程序的首地址,前面要用(uint32)強(qiáng)制類(lèi)型轉(zhuǎn)換。

            4、設(shè)置VICDefVectAddr(當(dāng)都設(shè)置為向量IRQ時(shí)可以沒(méi)有這個(gè))

            若是非向量IRQ中斷,VIC提供默認(rèn)服務(wù)程序地址VICDefVectAddr,IRQ中斷入口程序可通過(guò)讀取VIC的向量地址寄存器VICVectAddr來(lái)取得該地址,然后跳轉(zhuǎn)到相應(yīng)服務(wù)程序繼續(xù)執(zhí)行。該默認(rèn)服務(wù)程序由所有非向量IRQ公用,默認(rèn)服務(wù)程序可讀取IRQ狀態(tài)寄存器以確定哪個(gè)IRQ被激活。

            例如:VICDefVectAddr = (uint32)Default_Entry,設(shè)置非向量中斷地址。如果在管理向量中斷的VICVectCntl0~15和VICVectAddr0~15中沒(méi)有設(shè)置某一個(gè)中斷EINTx則此EINTx中斷發(fā)生時(shí),要進(jìn)入非向量中斷處理程序Default_Entry。

            5、設(shè)置VICIntEnable使能

            例如:VICIntEnable = 0x00018000,使能EINT1和EINT2。因?yàn)镋INT1和EINT2的VIC通道號(hào)分別為15和16,所以15和16兩位置一將EINT1和EINT2使能。

            在中斷服務(wù)程序中:

            1、中斷處理程序。用戶自己編寫(xiě)的實(shí)現(xiàn)某種功能的中斷程序

            2、清除相應(yīng)的中斷標(biāo)志,以響應(yīng)下一次中斷,并切換處理器工作模式。建議用__irq關(guān)鍵字定義中斷服務(wù)程序,這樣的話,該函數(shù)將自動(dòng)切換處理器工作模式,但該函數(shù)不能返回參數(shù)或者數(shù)值。

            3、退出中斷前,一定要對(duì)VICVectAddr寄存器寫(xiě)0,通知VIC中斷結(jié)束

            具體FIQ、向量IRQ和非向量IRQ的具體設(shè)置步驟不完全相同

            1、快速中斷FIQ

            ⑴在主程序中:

            1、在VICIntSelect中將中斷分配為FIQ中斷;

            2、在VICIntEnable中使能外設(shè)中斷。

            ⑵中斷服務(wù)程序中:

            1、中斷處理程序;

            2、清除相應(yīng)的中斷標(biāo)志,以響應(yīng)下一次中斷。

            2、向量IRQ

            ⑴主程序

            1、在VICIntSelect中將中斷分配為IRQ中斷;

            2、在VICVectCntlx中分配中斷通道(優(yōu)先級(jí));

            3、在VICVectAddrx中設(shè)置中斷服務(wù)程序的地址;

            4、通過(guò)VICIntEnable使能外設(shè)中斷。

            ⑵中斷服務(wù)程序

            1、中斷處理;

            2、清除相應(yīng)的中斷標(biāo)志,以響應(yīng)下一次中斷;

            3、對(duì)VICVectAddr寄存器執(zhí)行寫(xiě)操作(通常為0x00),結(jié)束向量中斷。

            3、非向量IRQ

            ⑴主程序

            1、在VICDefVectAddr中設(shè)置中斷服務(wù)程序的地址;

            2、通過(guò)VICIntEnable使能外設(shè)中斷。

            ⑵中斷服務(wù)程序

            1、中斷處理;

            2、清除相應(yīng)的中斷標(biāo)志,以響應(yīng)下一次中斷;

            3、對(duì)VICVectAddr寄存器執(zhí)行寫(xiě)操作(通常為0x00),結(jié)束向量中斷。



            評(píng)論


            技術(shù)專(zhuān)區(qū)

            關(guān)閉