在一段時間里,我都認為中斷與異常沒有很明顯的區(qū)別,因為表現(xiàn)出來都是當前運行中的程序被打斷,然后執(zhí)行中斷向量表中的函數(shù),但是其實這兩個還是有區(qū)別的。
中斷和異常分別屬于CPU的外因和內(nèi)因。例如CAN接收中斷、GPIO邊沿觸發(fā)中斷都屬于中斷范疇;而算數(shù)溢出、訪問地址越界、除0等導致的則屬于異常。
舉一個例子來解釋,當你在家玩游戲時,如果此時快遞小哥敲門,你就需要暫停手頭的游戲簽收一下快遞,這個時候的快遞小哥就屬于是中斷,是屬于外因打斷了你玩游戲;當你繼續(xù)玩游戲時,突然你肚子很痛要上廁所,則此時暫停玩游戲就屬于是異常,是屬于自身身體出問題的內(nèi)因打斷自己玩游戲。
中斷的引入 ——為了支持CPU與設備之間的并行操作
◆當CPU啟動外設進行輸入/輸出后,外設便可以獨立工作,CPU轉(zhuǎn)去處理其他與此次輸入/輸出不相關的事宜;當外設完成輸入/輸出后,通過向CPU發(fā)送中斷報告此次輸入/輸出的結(jié)果,讓CPU決定如何處理后續(xù)事宜。
異常的引入 ———表示CPU執(zhí)行指令時本身出現(xiàn)了問題
◆如算術(shù)溢出、除零、取數(shù)時的奇偶錯,訪存地址時越界或執(zhí)行了“陷入指令”等,這時硬件改變了CPU當前的運行流程,轉(zhuǎn)到相應的錯誤處理程序或異常處理程序或執(zhí)行系統(tǒng)調(diào)用
在Cortex-M內(nèi)核中,有三個中斷屏蔽寄存器,分別是PRIMASK、FAULTMASK、BASEEPRI。如下表所示,通過配置這三個寄存器,可實現(xiàn)對中斷、異常的管理。
為了控制中斷與異常,Cortex-M內(nèi)核專門設定了CPS指令,有如下四種用法:
CPSID I ;PRIMASK = 1 ;關中斷
CPSIE I ;PRIMASK = 0 ;開中斷
CPSID F ;FAULTMASK = 1 ;關異常
CPSIE F ;FAULTMASK = 0 ;開異常
I為Interrupt(中斷)、F為Fault(異常)
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
CAN總線
-
寄存器
-
GPIO
-
中斷控制器
-
Cortex-M
相關推薦
VP1176 和芯片6A1176簡直是傻傻分不清楚呀!!我把要買的芯片本來是買6A1176的,我買成了vp1176我是不是死定了················
發(fā)表于 06-27 16:06
RT。。大家都知道登陸用root很方便,但是也給我?guī)砹死_。怎么修改它呢?apache2?還是pam.d。傻傻分不清楚
發(fā)表于 07-04 13:30
如題,傻傻分不清楚,求大神指點!
發(fā)表于 09-10 02:24
`芯片,半導體,集成電路,傻傻分不清楚?一、什么是芯片芯片,又稱微電路(microcircuit)、微芯片(microchip)、集成電路(integrated circuit, IC),是指內(nèi)含
發(fā)表于 04-22 11:55
工業(yè)互聯(lián)網(wǎng)是什么?工業(yè)互聯(lián)網(wǎng)的網(wǎng)速快嗎?工業(yè)互聯(lián)網(wǎng)是物聯(lián)網(wǎng)概念的重新包裝么?工業(yè)互聯(lián)網(wǎng)和工業(yè)4.0,傻傻分不清楚?工業(yè)互聯(lián)網(wǎng)已經(jīng)滲透到了哪些領域?
發(fā)表于 07-12 06:51
你是否和木木一樣,想要自己diy一個機器人,卻對電機、舵機、步進電機、伺服電機、數(shù)字舵機、模擬舵機、串行總線舵機……一大堆名詞傻傻分不清楚?管你到底是啥,在我這都叫“馬達”,哈哈哈哈哈!如果你也是這樣可可愛愛、沒有腦袋,那么或許你應該抽出幾分鐘時間閱讀一下這篇文章。
發(fā)表于 09-01 08:31
計算機內(nèi)存結(jié)構(gòu) —— 位、字節(jié)和字
位
我們都知道,計算機存儲數(shù)值都以信息的基本單元的組合進行存儲,這個基本單元便是位(bit),我們通常用 0 和 1 來表示位的兩種狀態(tài)。
為什么使用 0 和 1 而不是 0、1、2、3、4、5 或者 6、7、8、9、10 等等這樣的數(shù)字組合呢?
我們可以想象這樣一種實際情況:我們的計算機歸根結(jié)底是一些硬件在進行處理和計算,硬件是需要電流起作用的,電流可以產(chǎn)生高電壓和低電壓,在數(shù)字電路中,通常將高電壓視為 1 ,低電壓視為 0 ,因此我們信息存儲的最終形式是一連串 1 和 0 的組合。這種表達形式與我們在邏輯中經(jīng)常使用 true 和 false 是類似的。
關于計算機為什么能夠讀懂 1 和 0,在這個問題下面有很多非常詳細的回答可以作為參考:
也許上面這個例子還是比較抽象,那么我們還可以想象這樣一種更古老的實際情況:早期的計算機還不具備處理高級語言的能力,程序員們只能將要寫的程序和要處理的數(shù)據(jù)變成一條條紙帶交給計算機去處理。而紙帶上某個特定位置的狀態(tài)是有限的,人們通過在紙帶上打洞還是不打洞來表示 1 和 0 。因此數(shù)據(jù)通過一連串打洞和不打洞的序列進行表示,即很多 1 和 0 的序列,這種數(shù)據(jù)表示的思想也一直延續(xù)到現(xiàn)在。
字節(jié)
通過上面的講解我們也能看到,一個位能表達的信息太少了,因此我們通常將單個的位連接組合起來,組成更大的存儲單元,我們稱這種最小組合單元為一個字節(jié)(byte),一個字節(jié)由 8 個位構(gòu)成,它足以用來存儲一個 char 類型的數(shù)據(jù)。
字
隨著存儲需求的日益增長,在現(xiàn)在大多數(shù)計算機中,字節(jié)被組合成更大的存儲單位,我們稱為字(word),一個字足以存儲一個 int 類型的數(shù)據(jù)。現(xiàn)在的大多數(shù)計算機要么使用四字節(jié)的字,要么使用八字節(jié)的字。我們通常所說的 32 位機器或者 64 位機器其實就是指計算機處理器一次能處理的數(shù)據(jù)大小,32 位即 4 個字節(jié),64 位即 8 個字節(jié)。
結(jié)論:
一個字等于多少個字節(jié),與系統(tǒng)硬件(總線、cpu命令字位數(shù)等)有關,不應該毫無前提地說一個字等于多少位。
正確的說法:
①:1字節(jié)(byte) = 8位(bit)
②:在16位的系統(tǒng)中(比如8086微機) 1字 (word)= 2字節(jié)(byte)= 16(bit)
在32位的系統(tǒng)中(比如win32) 1字(word)= 4字節(jié)(byte)=32(bit)
在64位的系統(tǒng)中(比如win64)1字(word)= 8字節(jié)(byte)=64(bit)
發(fā)表于 12-12 13:13
圖像不清楚與矩陣切換器的關系有哪些?
設備圖像不清楚主要包括:亮度低、邊緣聚焦不好、重影(
發(fā)表于 04-09 16:43
?935次閱讀
很多吃瓜群眾是不是已經(jīng)對“石墨烯電池”和“石墨烯基電池”傻傻分不清楚了。
發(fā)表于 01-23 15:40
?5412次閱讀
芯片,半導體,集成電路,傻傻分不清楚? 很多人都會有這樣的煩惱,希望今天分享的文章能幫助到大家~一起學習!一起進步! 一、什么是芯片? 芯片,又稱微電路、微芯片、集成電路(integrated
發(fā)表于 09-28 17:13
?3w次閱讀
目前網(wǎng)線和光纖就成為了網(wǎng)絡信號傳輸中最重要的兩種載體,如何選擇你清楚吧?這兩者的區(qū)別你了解嗎?下面就看看clan通訊小編的解答吧。
發(fā)表于 12-20 09:54
?6543次閱讀
有時候,發(fā)現(xiàn)對各種阻抗傻傻分不清楚,“好記性不如爛筆頭”,那就把它們一個個寫下來。
發(fā)表于 03-15 17:20
?1208次閱讀
你還傻傻分不清楚強弱電嗎?清點弱電怎么區(qū)別您知道嗎?因為高壓而稱之為強電,因為低壓而稱之為弱電嗎?今天科蘭小編將為大家一一解答這些問題,揭開強弱電的神秘面紗。 強電弱電怎么區(qū)別? (1)交流頻率
發(fā)表于 05-23 10:40
?2216次閱讀
注意:上面三個電源符號,本質(zhì)上都是GND,主要是為了PCB走線的需求,有一些單點接地或者多點接地的處理,為了避免干擾,才有所區(qū)分。
發(fā)表于 07-16 15:31
?3314次閱讀
如果我們發(fā)揮想象,一片一片的wafer(晶圓)在這FAB(晶圓廠)大樂園里搭乘著各種自動化移動工具(比如AGV(無人運載車)、ARM(機械手臂)、OHT(天車)),一會兒去泡個澡(浸泡清洗),一會兒去加工一下,那么,F(xiàn)OSB(前開晶圓運輸盒)、FOUP(前開式晶圓傳送盒)就可以被想象成是它們的搭乘車廂,有的對外移動,有的內(nèi)部移動,當然也不能忘了還有敞篷式的OPEN CASSETTE(開放式裝載盒)。
發(fā)表于 12-22 16:08
?2.6w次閱讀
評論