中斷是MSP430微處理器的一大特色,有效地利用中斷可以簡(jiǎn)化程序和提高執行效率。MSP430的幾乎每個(gè)外圍模塊都能夠產(chǎn)生中斷,為MSP430針對事件(即外圍模塊產(chǎn)生的中斷)進(jìn)行的編程打下基礎。MSP430在沒(méi)有事件發(fā)生時(shí)進(jìn)入低功耗模式,事件發(fā)生時(shí),通過(guò)中斷喚醒CPU,事件處理完畢后,CPU再次進(jìn)入低功耗狀態(tài)。由于CPU的運算速度和退出低功耗的速度很快,所以在應用中,CPU大部分時(shí)間都處于低功耗狀態(tài)。 MSP430的中斷分為3種:系統復位、不可屏蔽中斷、可屏蔽中斷。 (1)系統復位的中斷向量為0xFFFE。 (2)不可屏蔽中斷的中斷向量為0xFFFC。響應不可屏蔽中斷時(shí),硬件自動(dòng)將OFIE、NMIE、ACCVIE復位。軟件首先判斷中斷源并復位中斷標志,接著(zhù)執行用戶(hù)代碼。退出中斷之前需要置位OFIE、NMIE、ACCVIE,以便能夠再次響應中斷。需要特別注意點(diǎn):置位OFIE、NMIE、 ACCVIE后,必須立即退出中斷相應程序,否則會(huì )再次觸發(fā)中斷,導致中斷嵌套,從而導致堆棧溢出,致使程序執行結果的無(wú)法預料。 (3)可屏蔽中斷的中斷來(lái)源于具有中斷能力的外圍模塊,包括看門(mén)狗定時(shí)器工作在定時(shí)器模式時(shí)溢出產(chǎn)生的中斷。每一個(gè)中斷都可以被自己的中斷控制位屏蔽,也可以由全局中斷控制位屏蔽。 多個(gè)中斷請求發(fā)生時(shí),響應最高優(yōu)先級中斷。響應中斷時(shí),MSP430會(huì )將不可屏蔽中斷控制位SR.GIE復位。因此,一旦響應了中斷,即使有優(yōu)先級更高的可屏蔽中斷出現,也不會(huì )中斷當前正在響應的中斷,去響應另外的中斷。但SR.GIE復位不影響不可屏蔽中斷,所以仍可以接受不可屏蔽中斷的中斷請求。 中斷響應的過(guò)程:(1)如果CPU處于活動(dòng)狀態(tài),則完成當前指令;(2)若CPU處于低功耗狀態(tài),則退出低功耗狀態(tài);(3)將下一條指令的PC值壓入堆棧;(4)將狀態(tài)寄存器SR壓入堆棧;(5)若有多個(gè)中斷請求,響應最高優(yōu)先級中斷;(6)單中斷源的中斷請求標志位自動(dòng)復位,多中斷源的標志位不變,等待軟件復位;(7)總中斷允許位SR.GIE復位。SR狀態(tài)寄存器中的CPUOFF、OSCOFF、SCG1、V、N、Z、C位復位;(8)相應的中斷向量值裝入PC寄存器,程序從此地址開(kāi)始執行。 中斷返回的過(guò)程:(1)從堆棧中恢復PC值,若響應中斷前CPU處于低功耗模式,則可屏蔽中斷仍然恢復低功耗模式;(2)從堆棧中恢復PC值,若響應中斷前CPU不處于低功耗模式,則從此地址繼續執行程序。 MSP430各系列的中斷向量表請查閱相關(guān)資料. |