FAQ

よくある質問

為什麼外設中斷旗標已經被清除,但還是會進入中斷服務函式?  日期:2018-11-26

因為NVIC_ICPR暫存器中,對應的外設中斷旗標沒有被清除。

 

在Cortex-M的架構中,中斷服務函式執行的先後順序是透過NVIC控制的,這裡問題中有兩個旗標,一個是外設內部自己的中斷旗標,另一個是NVIC中用來記錄哪個外設發出中斷的旗標。

外設的中斷旗標被設定為1的同時,會將NVIC中的NVIC_ICPR暫存器對應的值設為1,若是使用者僅清除外設的中斷旗標後,NVIC_ICPR暫存器中對應的值並沒有被清掉,NVIC還是會依照NVIC_ICPR暫存器的結果進入中斷服務函式。

 

進入中斷服務函式的概略流程如下:

(1) 外設中斷被觸發

(2) 外設的中斷旗標舉起

(3) NVIC中,NVIC_ICPR暫存器對應的旗標舉起

(4) 由NVIC排程後,進入中斷服務函式

 

NVIC_ICPR暫存器清除的方式有二種。

(1) 當進入中斷服務函式時,由硬體自動清除NVIC_ICPR暫存器

(2) 手動透過軟體去清除NVIC_ICPR暫存器

產品: 微控制器 ,Arm Cortex-M0 微控制器 ,Arm Cortex-M4 微控制器
應用:
功能: Peripherals,ARM,NVIC
本網站使用cookie作為與網站互動時識別瀏覽器之用,瀏覽本網站即表示您同意本網站對cookie的使用及相關隱私權政策
OK