GPIO 插斷遮罩
一般用途 I/O (GPIO) 針腳,除了啟用和停用之外,還可以遮罩和取消遮罩。
如果周邊裝置的層級觸發中斷已啟用且作用中,但核心設陷處理常式無法立即執行裝置的插斷服務常式, (ISR) 清除中斷,處理常式會在 GPIO 針腳上遮罩中斷,以防止針腳重複造成更多中斷。 之後,在 ISR 執行並清除中斷之後,就可以安全地解除遮罩中斷。
遮罩中斷不會清除或停用中斷。 如果已啟用、作用中和遮罩 GPIO 中斷,則取消遮罩此中斷會導致 GPIO 控制器裝置向處理器發出中斷要求。
GPIO 插斷遮罩位在停用 GPIO 中斷時沒有任何作用。 CLIENT_EnableInterrupt回呼函式會將中斷的遮罩位設定為零;也就是說,中斷一開始會在啟用後解除遮罩。
遮罩和停用 GPIO 插斷針的重要區別在於遮罩會保留針腳的中斷組態設定,而停用針腳則不會。 當 GPIO 插斷針被遮罩時,它會保留其先前程式化的插斷模式, (邊緣觸發或層級觸發的) 、極性 (主動高、主動-低或主動-兩者) ,以及反動設定。 這些設定會在中斷解除遮罩後立即再次生效。 不過,停用中斷時,所有針腳的中斷組態設定都會遺失。 啟用針腳之後,必須使用必要的插斷組態設定再次進行程式設計。
有些 GPIO 控制器會在硬體中實作與中斷啟用插斷暫存器不同的插斷遮罩暫存器。
不過,其他 GPIO 控制器會提供一組結合插斷遮罩和中斷啟用功能的硬體暫存器。 這些控制器的驅動程式會在軟體中模擬個別的插斷遮罩和插斷啟用暫存器。 為了這樣做,這些驅動程式會追蹤插斷啟用位和插斷遮罩位的邏輯狀態,並操作硬體暫存器中的對應位,以精確地反映每個 GPIO 中斷的合併邏輯中斷啟用和插斷遮罩位的行為。