設定中斷流程

2021-10-03 21:16:56 字數 1390 閱讀 9550

中斷分組設定

1.往scb->aircr暫存器中寫入分組資訊,注意要寫入鑰匙0x05fa0000 | 分組號

具體中斷配置(建議寫成函式,引數為搶占優先順序,響應優先順序,在向量表中的名字,分組,原子提供的函式名是my_nvic_init())

1.設定分組(和上一段一樣)

2.將優先順序組合成4位

3.使能中斷位///****

nvic->iser[名/32] = (1 << 名 % 32)由於中斷函式的名字在庫里對映成了列舉型別,對應向量表中的位置(參考手冊p130看中斷的編號)

4.設定搶占優先順序和響應優先順序

nvic->ip[名] = 4位優先順序 << 4;

以上內容只是實現了中斷的分組及優先順序配置,具體的中斷還需自行查閱參考手冊編寫函式,下面介紹外部中斷的配置初始化流程(注:中斷函式中要清除exti->pr相應的中斷標誌位)

1.設定相應的io口輸入上下拉

1)rcc->apb2enr

2)gpio->crl

3)gpio->odr(上下拉)

2.使能io復用時鐘rcc->apb2enr |= 0x01

3.清除外部中斷配置暫存器原來的設定

afio->exticr[n] &= ~(0x000f << m); m,n由要引起中斷的io管腳位置決定

4.向afio->exticr[n] |= 寫入gpio的編號0,1,2…

(注,3,4步實現的基礎是stm32的中斷系統共有16條可供io使用的外部中斷線,分別對映為exti暫存器組中的4位中去,例如exti[1]的低4位就代表第5條外部中斷線,對應於gpio的p4管腳。第四步設定的是具體是哪個gpio的管腳,例如寫入0000就是gpioa_4,0010就是gpioc_4)

5.開放中斷線上的遮蔽

exti->imr= 1 << l

5開放事件線上的遮蔽

exti->emr|= 1 << |

6.設定中斷中斷線上的電平觸發方式

exti->ftsr |= 1 << k

exti->rtsr |=1 << k

注:事件的實現方式與中斷不一樣(具體**見adc章節)

SylixOS中斷流程

sylixos中斷註冊是通過陣列和雙向鍊錶實現的。k idesctable 256 是sylixos核心中的系統中斷向量結構索引陣列,用於索引註冊的中斷服務函式,其型別如清單 21所示 清單21 typedef struct lw class intdesc 第乙個成員是雙向鍊錶的頭指標,用於指向將...

ARM的工作模式和中斷流程

arm體系結構中有七個工作模式 0b10000 usr 使用者模式,一般的,唯一沒有特權的模式,也是正常工作模式,不能切換到其他模式 0b10001 fiq 快中斷模式,用於高速資料傳輸,快中斷響應的工作模式 0b10010 irq 中斷模式,通用中斷處理,一般中斷響應的工作模式 0b10011 s...

Hystrix熔斷流程

整個服務熔斷降級是在消費端 圖中流程的說明 將遠端服務呼叫邏輯封裝進乙個hystrixcommand。對於每次服務呼叫可以使用同步或非同步機制,對應執行execute 或queue 判斷熔斷器 circuit breaker 是否開啟或者半開啟狀態,如果開啟跳到步驟8,進行回退策略,如果關閉進入步驟...