向量中斷就是不同的中斷有不同的入口地址,非向量中斷就只有一個(gè)入口地址,進(jìn)去了在判斷中斷標(biāo)志來(lái)識(shí)別具體是哪個(gè)中斷。向量中斷實(shí)時(shí)性好,非向量中斷簡(jiǎn)單。 向量者,矢量也,即指方向,門(mén)路。 向量中斷——由硬件提供中斷服務(wù)程序入口地址; 非向量中斷——由軟件件提供中斷服務(wù)程序入口地址 向量中斷模式用于RESET、NMI、異常處理。當(dāng)向量中斷產(chǎn)生時(shí),控制器直接將PC賦值,如跳到0×0000000d處,而在0×0000000d地址處通常放置ISR服務(wù)程序地址LDR PC, =ISR_HANDLER。 非向量中斷模式,有一個(gè)寄存器標(biāo)識(shí)位,跳轉(zhuǎn)到統(tǒng)一的函數(shù)地址,此函數(shù)通過(guò)判別寄存器標(biāo)識(shí)位和優(yōu)先級(jí)關(guān)系進(jìn)行中斷處理。 向量中斷模式是當(dāng)CPU讀取位于0×18處的IRQ中斷指令的時(shí)候,系統(tǒng)自動(dòng)讀取對(duì)應(yīng)于該中斷源確定地址上的指令取代0×18處的指令,通過(guò)跳轉(zhuǎn)指令系統(tǒng)就直接跳轉(zhuǎn)到對(duì)應(yīng)地址函數(shù)中,節(jié)省了中斷處理時(shí)間提高了中斷處理速度。例如 ADC 中斷的向量地址為0xC0,則在0xC0處放如下代碼:ldr PC,=HandlerADC 當(dāng)ADC中斷產(chǎn)生的時(shí)候系統(tǒng)會(huì)自動(dòng)跳轉(zhuǎn)到HandlerADC函數(shù)中處理中斷。 非向量中斷模式處理方式是一種傳統(tǒng)的中斷處理方法,當(dāng)系統(tǒng)產(chǎn)生中斷的時(shí)候,系統(tǒng)將INTPND寄存器中對(duì)應(yīng)標(biāo)志位置位,然后跳轉(zhuǎn)到位于0×18處的統(tǒng)一中斷函數(shù)中;該函數(shù)通過(guò)讀取INTPND寄存器中對(duì)應(yīng)標(biāo)志位來(lái)判斷中斷源,并根據(jù)優(yōu)先級(jí)關(guān)系再跳到對(duì)應(yīng)中斷源的處理代碼中處理中斷。其實(shí),所有的非向量中斷可以看成是一個(gè)向量中斷。 轉(zhuǎn)載自阿吳網(wǎng)志|Awu's Website |