在本文中,將討論定時器中斷的概念,事實上中斷是有效使用MCU的最基本方法之一。現(xiàn)在用一個類比來說明事情如何在沒有中斷的情況下工作:如果你正在煮雞蛋,并且想在10分鐘內(nèi)將它們從爐子上取下來,那么一種方法是不時檢查時鐘以確保看看時間是否到了。在嵌入式系統(tǒng)中也是如此:如果你想在執(zhí)行某些操作之前等待特定狀態(tài)發(fā)生變化,那么一種方法是定期檢查狀態(tài)。或者,如果你的程序正在等待GPIO輸入電平;要在執(zhí)行某個步驟之前從0更改為1,那么一種方法是定期檢查GPIO值。這種定期檢查的方法稱為輪詢。
雖然輪詢是一種檢查狀態(tài)變化的簡單方法,但它是有代價的。如果檢查間隔太長,發(fā)生和檢測之間可能會有很長的滯后——如果在檢查之前狀態(tài)又變回,你可能會完全錯過更改。更短的間隔將獲得更快、更可靠的檢測,但也會消耗更多的處理時間和功率,因為更多的檢查將返回否定。
另一種方法是利用中斷。使用這種方法,狀態(tài)變化會產(chǎn)生一個中斷信號,使CPU暫停其當(dāng)前操作(并保存其當(dāng)前狀態(tài)),然后執(zhí)行與中斷相關(guān)的處理,然后恢復(fù)其先前的狀態(tài)并從中斷處恢復(fù)。(見圖1)
讓我們回到煮雞蛋的例子。我們不會定期檢查,而是將計時器設(shè)置為10分鐘,然后做其他事情直到計時器響起,將我們的注意力轉(zhuǎn)回到雞蛋上。在這種情況下,定時器作為中斷工作,“把雞蛋從鍋里拿出來”是相關(guān)的處理。
MCU如何處理中斷?
中斷可以來自MCU內(nèi)部和MCU外部設(shè)備。例如,來自外部開關(guān)或傳感器的中斷有時稱為“附加中斷”,因為它是由附加到MCU上的IRQ(中斷請求)引腳的外部設(shè)備產(chǎn)生的。當(dāng)相關(guān)狀態(tài)發(fā)生變化時,外部設(shè)備向該引腳發(fā)送中斷請求信號,進(jìn)而產(chǎn)生通知給MCU的中斷控制器(在RX63N上,該控制器稱為“ICUb”)。
相比之下,來自片上外設(shè)(內(nèi)部定時器、GPIO線、UART等)的中斷稱為“外設(shè)中斷”。這些中斷信號直接通知中斷控制器,無需引腳連接。
中斷控制器的工作就是將這些中斷請求以協(xié)調(diào)的方式傳遞給CPU。當(dāng)發(fā)生多個中斷時,控制器必須根據(jù)它們的相對優(yōu)先級以適當(dāng)?shù)捻樞驅(qū)⑺鼈儼l(fā)送到CPU。并且控制器還必須知道哪些中斷當(dāng)前被屏蔽(禁用),以便它可以完全忽略這些中斷。
當(dāng)CPU收到控制器的中斷請求時,它停止執(zhí)行它正在處理的程序,并自動保存所有相關(guān)的工作信息,以便以后可以從中斷的地方繼續(xù)執(zhí)行。然后加載并執(zhí)行與接收到的中斷請求對應(yīng)的中斷處理程序。完成這個處理后,CPU恢復(fù)保存的信息并從它停止的地方恢復(fù)。(見圖2)注意保存和恢復(fù)是由CPU自動處理的;程序員不需要關(guān)心這些細(xì)節(jié)。
考慮通過UART進(jìn)行串行通信的情況。定期監(jiān)視UART以了解新字符的到來是低效的。因此,在大多數(shù)情況下,系統(tǒng)設(shè)計為當(dāng)新字符到達(dá)時UART本身會產(chǎn)生中斷,提醒CPU執(zhí)行適當(dāng)?shù)奶幚怼?/p>
-
mcu
+關(guān)注
關(guān)注
146文章
17358瀏覽量
352817 -
中斷
+關(guān)注
關(guān)注
5文章
900瀏覽量
41796
發(fā)布評論請先 登錄
相關(guān)推薦
linux中斷處理機(jī)制 中斷處理過程
![linux<b class='flag-5'>中斷</b><b class='flag-5'>處理</b>機(jī)制 <b class='flag-5'>中斷</b><b class='flag-5'>處理過程</b>](https://file1.elecfans.com/web2/M00/8F/88/wKgZomTQRuaAO1PdAAALe9cSNwg614.png)
單片機(jī)中斷的作用是什么?單片機(jī)中斷處理過程是怎樣運行的?
51單片機(jī)中斷處理過程有幾個
單片機(jī)中斷的處理過程是怎樣進(jìn)行的?
ARM中斷向量表異常處理過程解析
單片機(jī)的中斷系統(tǒng)的概念控制系統(tǒng)和處理過程及編程及應(yīng)用資料概述
![單片機(jī)的<b class='flag-5'>中斷</b>系統(tǒng)的概念控制系統(tǒng)和<b class='flag-5'>處理過程</b>及編程及應(yīng)用資料概述](https://file.elecfans.com/web1/M00/69/0F/pIYBAFvP60yASxTTAADLcs7kOng970.png)
linux驅(qū)動之中斷處理過程C程序部分
淺談嵌入式MCU的中斷處理
![淺談嵌入式<b class='flag-5'>MCU</b>的<b class='flag-5'>中斷</b><b class='flag-5'>處理</b>](https://file.elecfans.com/web1/M00/92/DB/pIYBAFzfbIeARe-kAAE2PO2_bDo008.png)
淺談中斷與單片機(jī)中斷處理的過程
![淺談<b class='flag-5'>中斷</b>與單片機(jī)<b class='flag-5'>中斷</b><b class='flag-5'>處理</b>的<b class='flag-5'>過程</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
單片機(jī)中斷處理過程包括哪些環(huán)節(jié)
![單片機(jī)<b class='flag-5'>中斷</b><b class='flag-5'>處理過程</b>包括哪些環(huán)節(jié)](https://file1.elecfans.com/web2/M00/A7/63/wKgaomUjnv2ANKwYAAAfYAKo0Kk189.png)
單片機(jī)中斷處理過程分為幾個階段
![單片機(jī)<b class='flag-5'>中斷</b><b class='flag-5'>處理過程</b>分為幾個階段](https://file1.elecfans.com/web2/M00/A7/8B/wKgaomUk75-AJ06SAAAgoOAIBJA269.png)
評論