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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 《Cortex-M0權(quán)威指南》之體系結(jié)構(gòu)---異常和中斷

          《Cortex-M0權(quán)威指南》之體系結(jié)構(gòu)---異常和中斷

          作者: 時間:2016-12-29 來源:網(wǎng)絡(luò) 收藏

            異常會引起程序控制的變化。在異常發(fā)生時,處理器停止當(dāng)前的任務(wù),轉(zhuǎn)而執(zhí)行異常處理程序,異常處理完成后,會繼續(xù)執(zhí)行剛才的任務(wù)。異常分為很多種,是其中之一。處理器最多支持32個外部(IRQ)和一個不可屏蔽(NMI),中斷事件的處理叫做中斷服務(wù)程序(ISR),中斷一般由片上的IO口的外部輸入產(chǎn)生(邊沿觸發(fā)和電平觸發(fā))。

          本文引用地址:http://www.ex-cimer.com/article/201612/342268.htm

            處理器上可用的中斷數(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ū)動庫種,異常編號和中斷編號是相互獨立的。系統(tǒng)異常使用負(fù)數(shù)定義,中斷使用0-31正數(shù)定義。

            復(fù)位是一種特殊的異常,數(shù)值為1,在IPSR中不可見。

            除了NMI,硬件錯誤和復(fù)位,其他所有異常的優(yōu)先級都是可編程的,NMI和硬件錯誤的優(yōu)先級是固定的,并且比其他異常的優(yōu)先級高。



          關(guān)鍵詞: Cortex-M0 中斷

          評論


          相關(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); })();