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