MSP430的中斷分為3種:系統(tǒng)復(fù)位、不可屏蔽中斷、可屏蔽中斷。
(1)系統(tǒng)復(fù)位的中斷向量為0xFFFE。
(2)不可屏蔽中斷的中斷向量為0xFFFC。響應(yīng)不可屏蔽中斷時(shí),硬件自動(dòng)將OFIE、NMIE、ACCVIE復(fù)位。軟件首先判斷中斷源并復(fù)位中斷標(biāo)志,接著執(zhí)行用戶代碼。退出中斷之前需要置位OFIE、NMIE、ACCVIE,以便能夠再次響應(yīng)中斷。需要特別注意點(diǎn):置位OFIE、NMIE、ACCVIE后,必須立即退出中斷相應(yīng)程序,否則會(huì)再次觸發(fā)中斷,導(dǎo)致中斷嵌套,從而導(dǎo)致堆棧溢出,致使程序執(zhí)行結(jié)果的無法預(yù)料。
(3)可屏蔽中斷的中斷來源于具有中斷能力的外圍模塊,包括看門狗定時(shí)器工作在定時(shí)器模式時(shí)溢出產(chǎn)生的中斷。每一個(gè)中斷都可以被自己的中斷控制位屏蔽,也可以由全局中斷控制位屏蔽。
多個(gè)中斷請(qǐng)求發(fā)生時(shí),響應(yīng)最高優(yōu)先級(jí)中斷。響應(yīng)中斷時(shí),MSP430會(huì)將不可屏蔽中斷控制位SR.GIE復(fù)位。因此,一旦響應(yīng)了中斷,即使有優(yōu)先級(jí)更高的可屏蔽中斷出現(xiàn),也不會(huì)中斷當(dāng)前正在響應(yīng)的中斷,去響應(yīng)另外的中斷。但SR.GIE復(fù)位不影響不可屏蔽中斷,所以仍可以接受不可屏蔽中斷的中斷請(qǐng)求。
中斷響應(yīng)的過程:(1)如果CPU處于活動(dòng)狀態(tài),則完成當(dāng)前指令;(2)若CPU處于低功耗狀態(tài),則退出低功耗狀態(tài);(3)將下一條指令的PC值壓入堆棧;(4)將狀態(tài)寄存器SR壓入堆棧;(5)若有多個(gè)中斷請(qǐng)求,響應(yīng)最高優(yōu)先級(jí)中斷;(6)單中斷源的中斷請(qǐng)求標(biāo)志位自動(dòng)復(fù)位,多中斷源的標(biāo)志位不變,等待軟件復(fù)位;(7)總中斷允許位SR.GIE復(fù)位。SR狀態(tài)寄存器中的CPUOFF、OSCOFF、SCG1、V、N、Z、C位復(fù)位;(8)相應(yīng)的中斷向量值裝入PC寄存器,程序從此地址開始執(zhí)行。
中斷返回的過程:(1)從堆棧中恢復(fù)PC值,若響應(yīng)中斷前CPU處于低功耗模式,則可屏蔽中斷仍然恢復(fù)低功耗模式;(2)從堆棧中恢復(fù)PC值,若響應(yīng)中斷前CPU不處于低功耗模式,則從此地址繼續(xù)執(zhí)行程序。
MSP430的中斷優(yōu)先級(jí)順序從高到低為:
PORT2_VECTOR (1 * 2u) /* 0xFFE2 Port 2 */
PORT1_VECTOR (4 * 2u) /* 0xFFE8 Port 1 */
TIMERA1_VECTOR (5 * 2u) /* 0xFFEA Timer A CC1-2, TA */
TIMERA0_VECTOR (6 * 2u) /* 0xFFEC Timer A CC0 */
ADC_VECTOR (7 * 2u) /* 0xFFEE ADC */
USART0TX_VECTOR (8 * 2u) /* 0xFFF0 USART 0 Transmit */
USART0RX_VECTOR (9 * 2u) /* 0xFFF2 USART 0 Receive */
WDT_VECTOR (10 * 2u) /* 0xFFF4 Watchdog Timer */
COMPARATORA_VECTOR (11 * 2u) /* 0xFFF6 Comparator A */
TIMERB1_VECTOR (12 * 2u) /* 0xFFF8 Timer B CC1-2, TB */
TIMERB0_VECTOR (13 * 2u) /* 0xFFFA Timer B CC0 */
NMI_VECTOR (14 * 2u) /* 0xFFFC Non-maska××e */
RESET_VECTOR (15 * 2u) /* 0xFFFE Reset [Highest Priority] */
當(dāng)同時(shí)有多個(gè)中斷來的時(shí)候才有優(yōu)先級(jí)的考慮(優(yōu)先級(jí)順序可查看向量表)
有中斷響應(yīng)以后自動(dòng)關(guān)閉總中斷,這個(gè)時(shí)候即使來更高優(yōu)先級(jí)的中斷都不會(huì)響應(yīng)
要中斷嵌套的話,就必須在中斷中打開總中斷
msp430的指令中,DINT和EINT分別指關(guān)和開所有中斷,也就是包涵P1IE、P2IE、WDTIE、TAIE、TBIE、ADC12IE、串口中斷允許的所有中斷允許位為“0”和為“1”。
-
寄存器
+關(guān)注
關(guān)注
31文章
5401瀏覽量
122781 -
msp430
+關(guān)注
關(guān)注
181文章
2404瀏覽量
230471 -
中斷
+關(guān)注
關(guān)注
5文章
902瀏覽量
42365
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
msp430中斷優(yōu)先級(jí)怎么分配的(msp430g2553)
msp430的中斷優(yōu)先級(jí)和中斷嵌套相關(guān)資料分享
普及一下MSP430的中斷系統(tǒng)
關(guān)于MSP430的IO口中斷簡(jiǎn)析
MSP430單片機(jī)中斷系統(tǒng)
MSP430有哪些可屏蔽中斷_MSP430中斷的優(yōu)先級(jí)
MSP430單片機(jī)中斷的定義及原理

MSP430單片機(jī)中斷的的優(yōu)先級(jí)順序定義

MSP430學(xué)習(xí)筆記-低功耗與中斷系統(tǒng)

msp430的中斷優(yōu)先級(jí)和中斷嵌套(及容易理解錯(cuò)誤的說明)

TI - MCU - MSP430使用指南5 -> ICC中斷控制器

【MSP430中斷】MSP430的IO口中斷/中斷特性

評(píng)論