24小時聯系電話:18217114652、13661815404
中文
技術專題
嵌入式單片機開發的中斷處理
眾所周知,一方面,在嵌入式系統中普遍使用單片機的一個重要原因是它們比MPU 和通用CPU 具有及時性優勢。低延遲的外設中斷和中斷嵌套是確保MCU實時性能的極大保證。另一方面,在嵌入式系統單片機開發軟件的開發中隨著系統功能的日益復雜,無論是否采用RTOS,多任務處理都是不可避免的。在裸奔系統中,為了獲得時間緊迫的任務來獲得第一響應,通常有必要實現外圍中斷嵌套,該嵌套中斷屬于基于外圍設備的硬件中斷嵌套。在RTOS中,分配了所有系統任務。具有特定優先級的內核會根據優先級進行調度,實際上它實現了一組基于優先級的軟件中斷嵌套。嵌套在RTOS中的任務軟件使用內核滴答計時器中斷來連續查詢RTOS任務準備列表中每個任務的優先級,以實現任務切換,而外圍硬件中斷不一定需要嵌套。
由于中斷嵌套對于嵌入式單片機開發設計非常重要,所以什么是中斷嵌套?在具體說明中斷嵌套之前,有必要先談談嵌入式MCU的中斷工作機制和中斷優先級:
編寫準系統的工程師知道,核心CPU一次只能執行一個任務/程序代碼/指令,例如數據計算以及與片上外圍設備的交互通信。代碼的執行順序由用戶自己編寫,CPU逐行獲取,解碼和執行。乘積函數的實現在主函數(通常稱為主程序)的while(1)循環中,并由其他函數不斷調用。但是,在實際的工作環境中,許多事件是隨機發生的,例如網絡通信,外部IO輸入和其他不確定事件。此時,CPU必須放下當前正在執行的工作,但要對這些緊急情況做出響應并及時讀取網絡消息。處理和響應網絡通信需求以及及時的外部IO請求。這種處理稱為中斷。
嵌入式單片機開發中的內核CPU異常和各種外設操作可以生成響應中斷,并由中斷控制器統一管理。這樣,CPU可以專注于不產生中斷時順序執行的任務,并且僅在產生中斷時才通過中斷控制器中斷CPU(通過向CPU產生高/低信號,此過程稱為打斷)。請求),如果此時啟用了CPU全局中斷,則CPU將組合中斷向量表和中斷優先級配置,根據中斷優先級(如果同時發生多個外設中斷),從中斷向量表中取出很高優先級中斷服務程序的ISR地址將當前CPU運行時環境壓入堆棧,然后跳轉到中斷ISR地址。如果CPU全局中斷已關閉,則當前中斷請求將被忽略。
S12核心CPU的中斷/異常處理流程圖如下:
中斷響應-中斷ISR和實時中斷
產生中斷時,中斷控制器會向核心CPU請求中斷響應。
典型的響應是CPU運行預先準備的中斷ISR。