RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

單片機中斷系統(tǒng)詳解

jf_41382789 ? 來源:jf_41382789 ? 2023-12-05 09:09 ? 次閱讀

一、中斷的基本概念及流程

單片機中斷是指在單片機執(zhí)行程序的過程中,當(dāng)外部設(shè)備或內(nèi)部條件發(fā)生某個特定事件時,能夠暫停當(dāng)前正在執(zhí)行的程序,轉(zhuǎn)而去執(zhí)行一個特定的服務(wù)程序(稱為中斷服務(wù)程序或中斷

處理程序),處理該事件,之后再返回到被中斷處繼續(xù)執(zhí)行原程序的一種機制。中斷提供了一種處理異步事件的有效方式。

中斷的基本概念包括以下幾個方面:

1. 中斷源:中斷源是指可以觸發(fā)中斷請求的事件或設(shè)備。中斷源可以是外部的,如外部設(shè)備的信號變化;也可以是內(nèi)部的,如定時器溢出、串口通信完成等。

2. 中斷向量:中斷向量是指中斷服務(wù)程序入口地址的指針。在中斷發(fā)生時,單片機通過查詢中斷向量表來確定要跳轉(zhuǎn)到的中斷服務(wù)程序的具體地址。

3. 中斷服務(wù)程序(ISR):中斷服務(wù)程序是響應(yīng)中斷請求時所執(zhí)行的一段特殊的程序代碼。它專門用于處理中斷事件,并在處理完畢后返回到主程序繼續(xù)執(zhí)行。

4. 中斷請求(IRQ):當(dāng)中斷源產(chǎn)生一個中斷信號時,這個信號被稱為中斷請求。中斷請求告知CPU有一個事件需要立即處理。

5. 中斷響應(yīng):當(dāng)CPU接收到中斷請求后,如果中斷被允許,CPU將完成當(dāng)前指令的執(zhí)行,然后開始中斷響應(yīng)流程,包括保存當(dāng)前環(huán)境(如程序計數(shù)器、狀態(tài)寄存器等),然后跳轉(zhuǎn)到對應(yīng)的中斷服務(wù)程序執(zhí)行。

6. 中斷優(yōu)先級:當(dāng)多個中斷同時請求時,中斷優(yōu)先級決定了哪個中斷會被首先處理。在具有多級中斷系統(tǒng)的單片機中,可以設(shè)置不同中斷源的優(yōu)先級。

7. 中斷使能與屏蔽:中斷使能是指允許中斷請求被CPU接受和處理的狀態(tài)。屏蔽則是指禁止中斷請求被CPU接受的狀態(tài)。軟件可以通過設(shè)置特定的控制位來使能或屏蔽中斷。

8. 中斷標志:中斷標志是指示特定中斷源是否發(fā)出中斷請求的標志位。當(dāng)相應(yīng)的事件發(fā)生時,中斷標志位被置位,CPU通過檢查這個標志來識別中斷請求。

9. 中斷清除:在中斷服務(wù)程序執(zhí)行完畢后,通常需要手動或自動清除中斷標志位,以便單片機可以響應(yīng)后續(xù)的同類中斷請求。

10. 上下文切換 :當(dāng)中斷發(fā)生時,CPU需要保存當(dāng)前執(zhí)行環(huán)境(上下文),以便在中斷處理完成后能夠恢復(fù)執(zhí)行原來的程序。這個保存和恢復(fù)的過程稱為上下文切換。

中斷機制是嵌入式系統(tǒng)設(shè)計中非常重要的一部分,它提高了系統(tǒng)對外部事件的響應(yīng)速度和實時性,并且可以有效地利用CPU資源,提高系統(tǒng)的整體性能。

說明: CPU在處理某一事件A。另一事件B發(fā)出中斷請求。CPU暫時中斷當(dāng)前的工作。敢去處理事件。在CPU將事件B處理完畢后,再回到原來事件A被中斷的地方。繼續(xù)處理事件A

二、中斷的優(yōu)勢

1. 提高效率:中斷允許微控制器在需要時立即響應(yīng)外部事件,而不是通過輪詢的方式不斷檢查事件是否發(fā)生。這種機制避免了CPU資源的浪費,因為CPU只需在中斷發(fā)生時才處理相應(yīng)的事件。

2. 實時性:中斷驅(qū)動的程序能夠快速響應(yīng)外部事件,這對于需要實時或近實時操作的應(yīng)用(如工業(yè)控制、醫(yī)療設(shè)備、通信系統(tǒng)等)至關(guān)重要。

3. 并發(fā)處理:中斷使得單片機能夠看似同時處理多個任務(wù)。雖然單片機是單核的,不能真正并行處理多個任務(wù),但中斷可以讓單片機在處理一個任務(wù)時,如果有更高優(yōu)先級的任務(wù)發(fā)生,能夠暫停當(dāng)前任務(wù),轉(zhuǎn)而處理更緊急的務(wù)。

4. 節(jié)能:中斷機制可以與低功耗模式結(jié)合使用。單片機可以在沒有任務(wù)需要處理時進入睡眠模式,當(dāng)外部事件觸發(fā)中斷時喚醒單片機,這樣可以顯著降低功耗,延長電池壽命。

5.響應(yīng)優(yōu)先級:中斷具有優(yōu)先級,使得開發(fā)者可以根據(jù)應(yīng)用需求設(shè)置不同中斷源的優(yōu)先級,確保更重要的任務(wù)能夜得到及時處理。

6. 簡化程序結(jié)構(gòu):中斷機制簡化了程序的控制流程,因為不需要在主循環(huán)中編寫復(fù)雜的條件判斷和狀態(tài)管理代碼,相關(guān)的處理邏輯可以放在各自的中斷服務(wù)程序中。

7. 增強模塊性:每個中斷服務(wù)程序可以看作是一個獨立的模塊,負責(zé)處理特定的事件。這種模塊化設(shè)計使得程序更易于管理和維護。

8. 支持多任務(wù)操作:雖然單片機不是多線程的,但中斷可以創(chuàng)建一種多任務(wù)操作的效果,通過中斷服務(wù)程序來響應(yīng)和處理不同的任務(wù)。

9. 數(shù)據(jù)處理能力:對于數(shù)據(jù)采集和通信類應(yīng)用,中斷確保了數(shù)據(jù)能夠及時處理,例如,可以在串口接收到新數(shù)據(jù)時立即處理,避免了數(shù)據(jù)丟失或緩沖區(qū)溢出的風(fēng)險。

10. 提升用戶體驗:在用戶交互密集的應(yīng)用中,中斷可以確保用戶輸入得到快速響應(yīng),提高了用戶體驗。

三、中斷函數(shù)與普通函數(shù)的異同

相同點:

1. 函數(shù)結(jié)構(gòu):無論是中斷函數(shù)還是普通函數(shù),它們都有自己的函數(shù)名、參數(shù)列表(中斷函數(shù)通常沒有參數(shù))和函數(shù)體。

2. 代碼封裝:中斷函數(shù)和普通函數(shù)都是將代碼封裝起來以實現(xiàn)特定功能的方式,它們都可以在程序中被調(diào)用或觸發(fā)執(zhí)行。

3. 編程語言:中斷函數(shù)和普通函數(shù)通常都是使用相同的編程語言編寫的,如C語言。

不同點:

1. 觸發(fā)方式:

普通函數(shù)是由程序中的其他函數(shù)主動調(diào)用的。

中斷函數(shù)是由外部事件(如硬件信號)或內(nèi)部事件(如定時器溢出)觸發(fā)的。

2. 執(zhí)行流程:

普通函數(shù)的執(zhí)行是順序的,嚴格按照程序的控制流進行。

中斷函數(shù)的執(zhí)行是非順序的,它打斷了當(dāng)前的程序執(zhí)行流程,當(dāng)中斷條件滿足時即被執(zhí)行。

3. 優(yōu)先級:

普通函數(shù)沒有優(yōu)先級的概念,它們的執(zhí)行取決于程序的邏輯順序。

中斷函數(shù)具有優(yōu)先級,當(dāng)多個中斷同時發(fā)生時,高優(yōu)先級的中斷函數(shù)會先被執(zhí)行。

4. 執(zhí)行環(huán)境(上下文):

普通函數(shù)在執(zhí)行時使用的是調(diào)用它的函數(shù)的上下文環(huán)境。

中斷函數(shù)需要保存當(dāng)前任務(wù)的上下文,并在執(zhí)行完畢后恢復(fù)上下文,以便主程序可以繼續(xù)執(zhí)行。

5. 返回過程:

普通函數(shù)通過return語句返回到調(diào)用它的函數(shù)處。

中斷函數(shù)通過特殊的中斷返回指令(如8051中的RETI)返回,這個過程通常包括恢復(fù)之前被中斷的上下文。

6. 重入性:

普通函數(shù)是否可重入取決于其設(shè)計,如果函數(shù)使用了全局變量或靜態(tài)變量,可能就不是可重入的。

中斷函數(shù)通常需要設(shè)計為可重入的,因為在執(zhí)行中斷服務(wù)程序時可能會被更高優(yōu)先級的中斷打斷。

7. 資源使用:

普通函數(shù)對資源的使用相對自由。

中斷函數(shù)應(yīng)盡量簡短,避免使用大量的系統(tǒng)資源,以免影響系統(tǒng)的響應(yīng)能力。

8. 編寫注意事項:

普通函數(shù)的編寫相對自由,可以根據(jù)需要使用各種語言特性。

中斷函數(shù)在編寫時需要特別注意,因為它們需要快速執(zhí)行并且不能阻塞,還要考慮到與主程序的交互和數(shù)據(jù)一致性問題。

總的來說,中斷函數(shù)是一種特殊的函數(shù),它們在系統(tǒng)中扮演著響應(yīng)硬件和軟件事件的角色,而普通函數(shù)則是構(gòu)建程序邏輯和實現(xiàn)功能的基本單元。在嵌入式編程中,合理地使用中斷函數(shù)對提高系統(tǒng)的效率和實時性至關(guān)重要。

三、中斷函數(shù)的編碼注意事項

在編寫中斷服務(wù)程序(ISR)時,需要遵循一些特殊的編碼規(guī)范和注意事項,以確保系統(tǒng)穩(wěn)定、高效運行。以下是編寫中斷函數(shù)時應(yīng)該考慮的一些關(guān)鍵點:

1. 盡量簡短:中斷服務(wù)程序應(yīng)該盡可能地簡短和高效,以便快速完成處理并返回主程序,減少對主程序流程的干擾。

2. 避免使用阻塞調(diào)用:中斷服務(wù)程序中不應(yīng)該包含可能會導(dǎo)致阻塞的調(diào)用,如等待信號量、延時等操作,因為這會影響系統(tǒng)對其他中斷的響應(yīng)能力。

3. 保存和恢復(fù)上下文:中斷服務(wù)程序在執(zhí)行前應(yīng)該保存被打斷任務(wù)的上下文(如CPU寄存器),并在執(zhí)行結(jié)束后恢復(fù),以保證主程序能夠無縫繼續(xù)執(zhí)行。

4. 可重入性:如果中斷可以嵌套,或者同一個中斷服務(wù)程序可以由不同的事件觸發(fā),那么這個程序必須是可重入的。這意味著它不能使用全局變量或靜態(tài)變量來保存狀態(tài)信息,除非這些變量是原子性訪問的。

5. 限制中斷屏蔽時間:在中斷服務(wù)程序中,可能需要臨時屏蔽(禁用)中斷,但是這種屏蔽的時間應(yīng)該盡可能短,以避免錯過其他重要中斷的處理。

6. 謹慎操作共享數(shù)據(jù):如果中斷服務(wù)程序需要訪問全局變量或其他共享資源,需要確保這些操作的原子性,以防止數(shù)據(jù)競爭和不一致性。這通常通過禁用中斷或使用其他同步機制來實現(xiàn)。

7. 快速響應(yīng):中斷服務(wù)程序應(yīng)當(dāng)被設(shè)計為能夠快速響應(yīng)新的中斷請求,這意味著在處理當(dāng)前中斷的同時,還要準備接收和處理下一個中斷。

8. 中斷嵌套:在允許中斷嵌套的系統(tǒng)中,應(yīng)當(dāng)明確各個中斷服務(wù)程序之間的優(yōu)先級關(guān)系,并合理設(shè)計代碼,以處理嵌套中斷情況。

9. 中斷標志清除:在中斷服務(wù)程序的適當(dāng)位置清除中斷標志位,以避免產(chǎn)生多余的中斷。某些單片機可能在中斷返回指令執(zhí)行時自動清除標志位,而某些則需要手動清除。

10. 避免浮點運算:由于浮點運算通常較為耗時,且可能需要額外的上下文保存和恢復(fù)操作,因此

在中斷服務(wù)程序中應(yīng)避免使用浮點運算。

11. 測試和驗證:中斷服務(wù)程序應(yīng)該經(jīng)過徹底的測試,以驗證它們在各種情況下的行為,特別是在系統(tǒng)負載高時的表現(xiàn)。

12. 編譯器優(yōu)化:有時候編譯器的優(yōu)化設(shè)置可能會影響中斷服務(wù)程序的正確性,需要確保編譯器的優(yōu)化設(shè)置與中斷服務(wù)程序的編寫相兼容。

四、中斷使用有什么注意事項

1. 中斷優(yōu)先級設(shè)計:合理地分配中斷優(yōu)先級,確保高優(yōu)先級的中斷可以打斷低優(yōu)先級的中斷服務(wù)程序,以處理更緊急的任務(wù)。

2. 中斷屏蔽策略:在關(guān)鍵的代碼段中,可能需要臨時屏蔽中斷,以保護代碼的原子性操作。但要注意屏蔽時間不宜過長,以免影響系統(tǒng)對中斷的響應(yīng)。

3. 中斷觸發(fā)模式:正確設(shè)置中斷的觸發(fā)模式,如邊沿觸發(fā)或電平觸發(fā),并確保硬件配置與之匹配。

4. 資源共享與同步:當(dāng)中斷服務(wù)程序與主程序共享資源(如數(shù)據(jù)、外設(shè)等)時,需要確保通過適當(dāng)?shù)耐綑C制來避免競態(tài)條件和數(shù)據(jù)不一致。

5. 中斷服務(wù)程序的編寫:中斷服務(wù)程序應(yīng)該盡量簡短,執(zhí)行速度要快,避免復(fù)雜的邏輯和耗時的操作。

6. 中斷嵌套處理:如果系統(tǒng)支持中斷嵌套,需要仔細設(shè)計中斷服務(wù)程序,確保在處理一個中斷時能夠正確響應(yīng)另一個中斷。

7. 中斷頻率控制:過高的中斷頻率可能會導(dǎo)致系統(tǒng)負載過重,從而影響系統(tǒng)性能。需要確保系統(tǒng)能夠在最壞情況下也能處理所有的中斷。

8. 中斷禁用與使能:在啟動中斷前,確保所有相關(guān)的硬件和軟件準備就緒。在關(guān)閉中斷后,確保不會遺漏任何重要的事件。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6035

    文章

    44554

    瀏覽量

    634621
  • 中斷系統(tǒng)
    +關(guān)注

    關(guān)注

    1

    文章

    96

    瀏覽量

    61015
收藏 人收藏

    評論

    相關(guān)推薦

    單片機按鍵中斷配置教程

    一些小伙伴覺得單片機入門太難了,又要懂原理圖、又要懂寄存器、還要學(xué)編程語言。
    的頭像 發(fā)表于 10-23 16:30 ?623次閱讀
    <b class='flag-5'>單片機</b>按鍵<b class='flag-5'>中斷</b>配置教程

    單片機有哪些中斷類型

    單片機中斷是指在單片機執(zhí)行程序的過程中,當(dāng)外部設(shè)備或內(nèi)部條件發(fā)生某個特定事件時,能夠暫停當(dāng)前正在執(zhí)行的程序,轉(zhuǎn)而去執(zhí)行一個特定的服務(wù)程序(稱為中斷服務(wù)程序或
    的頭像 發(fā)表于 10-17 18:12 ?626次閱讀

    單片機中斷機制

    單片機中斷機制是一種重要的處理方式,它允許單片機在執(zhí)行主程序的過程中,能夠暫停當(dāng)前任務(wù),轉(zhuǎn)而處理外部或內(nèi)部緊急事件。這種機制極大地提高了系統(tǒng)的響應(yīng)速度和處理能力,使得
    的頭像 發(fā)表于 10-17 18:03 ?619次閱讀

    單片機中斷有哪些?各類型中斷有什么作用?

    數(shù)據(jù)采集。 DAC中斷:當(dāng)數(shù)字-模擬轉(zhuǎn)換完成或準備好接受新數(shù)據(jù)時觸發(fā)。用于生成模擬信號。 5. 系統(tǒng)中斷 系統(tǒng)中斷是與
    發(fā)表于 09-24 16:22

    片上系統(tǒng)單片機的區(qū)別

    片上系統(tǒng)(SoC)與單片機在多個方面存在明顯的區(qū)別。
    的頭像 發(fā)表于 03-28 14:39 ?1418次閱讀

    如何系統(tǒng)、科學(xué)地自學(xué)單片機?

    很多初學(xué)者都會面臨這個問題,我想學(xué)習(xí)單片機、我也想學(xué)好單片機、我也想系統(tǒng)地學(xué)習(xí)單片機,但是單片機涉及到的學(xué)科多且雜根本不是三天兩天就能學(xué)完的
    的頭像 發(fā)表于 03-28 08:03 ?1066次閱讀
    如何<b class='flag-5'>系統(tǒng)</b>、科學(xué)地自學(xué)<b class='flag-5'>單片機</b>?

    單片機的最小系統(tǒng)由什么組成 單片機的最小系統(tǒng)包括哪些

    單片機(Microcontroller Unit,MCU)的最小系統(tǒng)包括以下幾個主要組成部分: 單片機芯片:單片機是整個最小系統(tǒng)的核心部分,
    的頭像 發(fā)表于 02-02 11:27 ?1w次閱讀

    單片機中的外部中斷低電平觸發(fā)和下降沿觸發(fā)有什么區(qū)別

    單片機中的外部中斷低電平觸發(fā)和下降沿觸發(fā)有什么區(qū)別? 外部中斷單片機中的一種功能,在特定條件下,外部信號的變化可以引發(fā)中斷,從而改變程序的
    的頭像 發(fā)表于 01-31 10:32 ?3557次閱讀

    單片機中斷功能及其應(yīng)用

    單片機中斷功能及其應(yīng)用? 單片機中斷是指在程序執(zhí)行過程中,根據(jù)特定的條件或事件自動暫時中斷當(dāng)前程序的執(zhí)行,轉(zhuǎn)而執(zhí)行特定的
    的頭像 發(fā)表于 01-30 14:45 ?5256次閱讀

    單片機外部中斷和定時器中斷的區(qū)別和用法

    單片機外部中斷和定時器中斷在觸發(fā)來源、應(yīng)用場景以及功能特點上存在明顯差異** **。
    的頭像 發(fā)表于 01-28 17:35 ?3071次閱讀

    單片機交通燈程序設(shè)計中斷系統(tǒng)

    隨著社會的發(fā)展,交通問題逐漸突出,特別是城市交通問題愈加嚴重。為了更好地管理和調(diào)控交通,提高交通流暢度和安全性,交通燈系統(tǒng)成為了城市交通管理的重要組成部分。而單片機交通燈的程序設(shè)計中斷系統(tǒng)
    的頭像 發(fā)表于 01-24 16:16 ?1095次閱讀

    單片機最小系統(tǒng)包含哪幾部分 單片機最小系統(tǒng)的作用

    單片機最小系統(tǒng)包含以下幾部分:單片機芯片、時鐘電路、復(fù)位電路、電源電路、外圍電路和連接接口等。 單片機芯片:單片機是整個
    的頭像 發(fā)表于 01-24 10:40 ?1.5w次閱讀

    單片機最小系統(tǒng)的作用 單片機最小系統(tǒng)包含哪幾部分

    單片機最小系統(tǒng)是指能夠獨立工作的最基本的硬件組成,也是單片機的必備基礎(chǔ)。它的作用是為單片機提供工作所需的最基本的資源和功能,使單片機能夠正常
    的頭像 發(fā)表于 01-18 13:54 ?4016次閱讀

    stc51單片機怎么燒錄

    燒錄STC51單片機是一項常見的操作,下面將詳細介紹如何進行燒錄以及所需的步驟和工具。本文將按照如下順序進行詳解: STC51單片機簡介 硬件燒錄工具介紹 硬件燒錄步驟 軟件燒錄工具介紹 軟件燒錄
    的頭像 發(fā)表于 01-02 17:41 ?3363次閱讀

    基于單片機的糧倉遠程監(jiān)控系統(tǒng)的設(shè)計

    基于單片機的糧倉遠程監(jiān)控系統(tǒng)的設(shè)計(實物)
    發(fā)表于 01-02 09:59 ?2次下載
    RM新时代网站-首页