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