<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > MSP430單片機(jī)中斷系統(tǒng)

          MSP430單片機(jī)中斷系統(tǒng)

          作者: 時間:2013-02-22 來源:網(wǎng)絡(luò) 收藏

          中斷是微處理器的一大特色,有效地利用中斷可以簡化程序和提高執(zhí)行效率。的幾乎每個外圍模塊都能夠產(chǎn)生中斷,為針對事件(即外圍模塊產(chǎn)生的中斷)進(jìn)行的編程打下基礎(chǔ)。MSP430在沒有事件發(fā)生時進(jìn)入低功耗模式,事件發(fā)生時,通過中斷喚醒CPU,事件處理完畢后,CPU再次進(jìn)入低功耗狀態(tài)。由于CPU的運算速度和退出低功耗的速度很快,所以在應(yīng)用中,CPU大部分時間都處于低功耗狀態(tài)。

          MSP430的中斷分為3種:系統(tǒng)復(fù)位、不可屏蔽中斷、可屏蔽中斷。

          (1)系統(tǒng)復(fù)位的中斷向量為0xFFFE。

          (2)不可屏蔽中斷的中斷向量為0xFFFC。響應(yīng)不可屏蔽中斷時,硬件自動將OFIE、NMIE、ACCVIE復(fù)位。軟件首先判斷中斷源并復(fù)位中斷標(biāo)志,接著執(zhí)行用戶代碼。退出中斷之前需要置位OFIE、NMIE、ACCVIE,以便能夠再次響應(yīng)中斷。需要特別注意點:置位OFIE、NMIE、ACCVIE后,必須立即退出中斷相應(yīng)程序,否則會再次觸發(fā)中斷,導(dǎo)致中斷嵌套,從而導(dǎo)致堆棧溢出,致使程序執(zhí)行結(jié)果的無法預(yù)料。

          (3)可屏蔽中斷的中斷來源于具有中斷能力的外圍模塊,包括看門狗定時器工作在定時器模式時溢出產(chǎn)生的中斷。每一個中斷都可以被自己的中斷控制位屏蔽,也可以由全局中斷控制位屏蔽。

          多個中斷請求發(fā)生時,響應(yīng)最高優(yōu)先級中斷。響應(yīng)中斷時,MSP430會將不可屏蔽中斷控制位SR.GIE復(fù)位。因此,一旦響應(yīng)了中斷,即使有優(yōu)先級更高的可屏蔽中斷出現(xiàn),也不會中斷當(dāng)前正在響應(yīng)的中斷,去響應(yīng)另外的中斷。但SR.GIE復(fù)位不影響不可屏蔽中斷,所以仍可以接受不可屏蔽中斷的中斷請求。

          中斷響應(yīng)的過程:(1)如果CPU處于活動狀態(tài),則完成當(dāng)前指令;(2)若CPU處于低功耗狀態(tài),則退出低功耗狀態(tài);(3)將下一條指令的PC值壓入堆棧;(4)將狀態(tài)寄存器SR壓入堆棧;(5)若有多個中斷請求,響應(yīng)最高優(yōu)先級中斷;(6)單中斷源的中斷請求標(biāo)志位自動復(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各系列的中斷向量表請查閱相關(guān)資料。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();