天堂草原最受欢迎的角色,天堂动漫,天堂在线,色天堂下载,天堂中文在线资源,亚洲男人天堂

技術熱線: 4007-888-234
設計開發

專注差異化嵌入式產品解決方案 給智能產品定制注入靈魂給予生命

開發工具

提供開發工具、應用測試 完善的開發代碼案例庫分享

技術支持

從全面的產品導入到強大技術支援服務 全程貼心伴隨服務,創造無限潛能!

新品推廣

提供新的芯片及解決方案,提升客戶產品競爭力

新聞中心

提供最新的單片機資訊,行業消息以及公司新聞動態

單片機的中斷:MCU如何處理中斷?

更新時間: 2021-08-26
閱讀量:7761

在本文中,將討論定時器中斷的概念,事實上中斷是有效使用MCU的最基本方法之一。現在用一個類比來說明事情如何在沒有中斷的情況下工作:如果你正在煮雞蛋,并且想在10分鐘內將它們從爐子上取下來,那么一種方法是不時檢查時鐘以確保看看時間是否到了。在嵌入式系統中也是如此:如果你想在執行某些操作之前等待特定狀態發生變化,那么一種方法是定期檢查狀態。或者,如果你的程序正在等待GPIO輸入電平;要在執行某個步驟之前從0更改為1,那么一種方法是定期檢查GPIO值。這種定期檢查的方法稱為輪詢。

雖然輪詢是一種檢查狀態變化的簡單方法,但它是有代價的。如果檢查間隔太長,發生和檢測之間可能會有很長的滯后——如果在檢查之前狀態又變回,你可能會完全錯過更改。更短的間隔將獲得更快、更可靠的檢測,但也會消耗更多的處理時間和功率,因為更多的檢查將返回否定。

另一種方法是利用中斷。使用這種方法,狀態變化會產生一個中斷信號,使CPU暫停其當前操作(并保存其當前狀態),然后執行與中斷相關的處理,然后恢復其先前的狀態并從中斷處恢復。(見圖1)

fig1-interrupts-vs-polling-en.jpg

讓我們回到煮雞蛋的例子。我們不會定期檢查,而是將計時器設置為10分鐘,然后做其他事情直到計時器響起,將我們的注意力轉回到雞蛋上。在這種情況下,定時器作為中斷工作,“把雞蛋從鍋里拿出來”是相關的處理。

MCU如何處理中斷?

中斷可以來自MCU內部和MCU外部設備。例如,來自外部開關或傳感器的中斷有時稱為“附加中斷”,因為它是由附加到MCU上的IRQ(中斷請求)引腳的外部設備產生的。當相關狀態發生變化時,外部設備向該引腳發送中斷請求信號,進而產生通知給MCU的中斷控制器(在RX63N上,該控制器稱為“ICUb”)。

相比之下,來自片上外設(內部定時器、GPIO線、UART等)的中斷稱為“外設中斷”。這些中斷信號直接通知中斷控制器,無需引腳連接。

中斷控制器的工作就是將這些中斷請求以協調的方式傳遞給CPU。當發生多個中斷時,控制器必須根據它們的相對優先級以適當的順序將它們發送到CPU。并且控制器還必須知道哪些中斷當前被屏蔽(禁用),以便它可以完全忽略這些中斷。

當CPU收到控制器的中斷請求時,它停止執行它正在處理的程序,并自動保存所有相關的工作信息,以便以后可以從中斷的地方繼續執行。然后加載并執行與接收到的中斷請求對應的中斷處理程序。完成這個處理后,CPU恢復保存的信息并從它停止的地方恢復。(見圖2)注意保存和恢復是由CPU自動處理的;程序員不需要關心這些細節。

fig2-interrupt-processing-flow-en.jpg

考慮通過UART進行串行通信的情況。定期監視UART以了解新字符的到來是低效的。因此,在大多數情況下,系統設計為當新字符到達時UART本身會產生中斷,提醒CPU執行適當的處理。

類似地,內部定時器通常被設置為驅動中斷以某個特定間隔重復執行某個特定進程:每次間隔過去時,定時器都會生成一個中斷,告訴CPU運行該進程。一般來說,使用這些類型的中斷可以大大提高MCU的運行效率。

联系我们: 顺义区| 金山区| 柞水县| 台东市| 方正县| 鄂尔多斯市| 平湖市| 岳池县| 库伦旗| 临潭县| 荃湾区| 页游| 佛学| 鹤峰县| 洪江市| 五大连池市| 梁河县| 湛江市| 新邵县| 邓州市| 青海省| 吉林省| 永登县| 汾西县| 黄骅市| 泗水县| 康定县| 定兴县| 曲沃县| 长垣县| 利辛县| 长葛市| 乌海市| 兴安县| 江山市| 格尔木市| 沙坪坝区| 凤城市| 西安市| 乐昌市| 堆龙德庆县|