嵌入式系統
中斷(Interrupt)
中斷是一種硬體訊號,會把處理器從正在做的事猛然拉開、立刻去處理某件緊急的事,再把它送回剛剛離開的地方。想像你正在看書,門鈴響了:你折個書籤、起身去開門、應付訪客,然後回來接著剛剛停下的那一句往下讀。門鈴就是中斷;去應門就是中斷服務常式(ISR);書籤就是被保存的處理器狀態。要是沒有中斷,你每隔幾秒就得停下閱讀走去看看門口有沒有人——既浪費又慢。
中斷正是嵌入式系統能保持靈敏、又不必把 CPU 燒在不停輪詢上的關鍵。腳位電位改變、計時器溢位、UART 收到一個位元組、ADC 轉換完成——每一件都能觸發一個中斷,暫停主程式、跳到一段短短的處理常式、再返回。好的 ISR 要小而快(設個旗標、搬個位元組),避免做耗時的工作,因為在處理一個中斷時其他中斷可能被擋住。優先權決定多個中斷同時湧入時誰先處理,而你也能遮罩(暫時關閉)中斷,以保護幾條絕不能被攔腰打斷的指令。
輪詢與中斷是核心的設計取捨。輪詢(不停地問「好了沒?」)簡單,但浪費週期又增加延遲;中斷較複雜,卻能讓 CPU 一直睡到真的有事發生才醒——這對低功耗、靠電池的裝置至關重要。
又称
另见