《Cortex-M0權(quán)威指南》之體系結(jié)構(gòu)---異常和中斷
掃描二維碼
隨時(shí)隨地手機(jī)看文章
異常會(huì)引起程序控制的變化。在異常發(fā)生時(shí),處理器停止當(dāng)前的任務(wù),轉(zhuǎn)而執(zhí)行異常處理程序,異常處理完成后,會(huì)繼續(xù)執(zhí)行剛才的任務(wù)。異常分為很多種,中斷是其中之一。Cortex-M0處理器最多支持32個(gè)外部中斷(IRQ)和一個(gè)不可屏蔽中斷(NMI),中斷事件的處理叫做中斷服務(wù)程序(ISR),中斷一般由片上的IO口的外部輸入產(chǎn)生(邊沿觸發(fā)和電平觸發(fā))。
Cortex-M0處理器上可用的中斷數(shù)量不確定,由廠商決定,最多32個(gè)外部中斷。如果系統(tǒng)的外設(shè)很多,由于中斷數(shù)目有限,多個(gè)中斷源可能使用同一個(gè)中斷連接。
除了IRQ和NMI,M0處理系還支持很多系統(tǒng)異常,它們主要用于操作系統(tǒng)和錯(cuò)誤處理。
異常類型 異常編號(hào) 描述
Reset 1 上電復(fù)位或系統(tǒng)復(fù)位
NMI 2 不可屏蔽中斷
Hard fault 3 用于錯(cuò)誤處理,系統(tǒng)檢測(cè)到錯(cuò)誤后被激活
SVCall 11 請(qǐng)求管理調(diào)用,在執(zhí)行SVC指令被激活,主要用作操作系統(tǒng)
PendSV 14 可掛起服務(wù)(系統(tǒng))調(diào)用
SysTick 15 系統(tǒng)節(jié)拍定時(shí)器異常,一般在OS種用作周期系統(tǒng)節(jié)拍異常
IRQ0-IRQ31 16-47 中斷,可來自于外部,也可來自片上外設(shè)
每一個(gè)異常都對(duì)應(yīng)一個(gè)異常編號(hào),這在包括IPSR在內(nèi)的許多寄存器種都有提現(xiàn),而且這個(gè)異常編號(hào)還指明了異常向量的地址。在設(shè)備驅(qū)動(dòng)庫種,異常編號(hào)和中斷編號(hào)是相互獨(dú)立的。系統(tǒng)異常使用負(fù)數(shù)定義,中斷使用0-31正數(shù)定義。
復(fù)位是一種特殊的異常,數(shù)值為1,在IPSR中不可見。
除了NMI,硬件錯(cuò)誤和復(fù)位,其他所有異常的優(yōu)先級(jí)都是可編程的,NMI和硬件錯(cuò)誤的優(yōu)先級(jí)是固定的,并且比其他異常的優(yōu)先級(jí)高。