今天學習了中斷(以STM32為例)
1.中斷優(yōu)先級:搶占優(yōu)先級(組優(yōu)先級)、響應優(yōu)先級(子優(yōu)先級)
搶占優(yōu)先級:可以被中斷嵌套。也就是在一個中斷發(fā)生的時候,另一個搶占優(yōu)先級比此中斷級別高的中斷可以打斷正在進行的中斷,直到更高優(yōu)先級的中斷執(zhí)行完畢之后,才會返回來繼續(xù)執(zhí)行這個被打斷的中斷
響應優(yōu)先級:不可以被中斷嵌套。也就是說在多個中斷同時發(fā)生的時候,只能夠優(yōu)先相應較高優(yōu)先級的中斷,并且如果在中斷過程中有更高優(yōu)先級中斷發(fā)生的時候,正在進行的中斷也不能夠被打斷。
2.NVIC:Nested vectored interrupt controller :可嵌套向量中斷控制器?
????82個可屏蔽中斷 ##不包括內核的16個中斷
????16個可編程優(yōu)先級 ##適用于全部中斷
????低延遲異常和中斷處理
????電源管理控制
????系統(tǒng)控制寄存器的實現
NVIC與處理器內核接口緊密耦合, 實現了高效快速的中斷響應。所有的中斷,包括內核異常都被 NVIC 所管理.
3.中斷向量表
中斷向量表在STM32F4XX啟動文件里面就可以看出來
4.EXTI(External interrupt/event controller) 外部中斷/事件控制器
????在每個中斷/事件線都有獨立的觸發(fā)和屏蔽功能
????每個中斷線有專用的狀態(tài)標志位
????可產生高達 23 個軟件事件/中斷請求
????以比APB2時鐘周期更短的脈沖寬度檢測外部信號
5.中斷與事件配置
? ?(1) 硬件中斷選擇
????????配置 23 中斷線的屏蔽位 (EXTI_IMR)
????????配置中斷線的觸發(fā)選擇位 (EXTI_RTSR and EXTI_FTSR)
????????配置控制 NVIC IRQ 通道的使能與屏蔽位來使來自 23 線的一個中斷可以被正確的應答,NVIC ????????IRQ 被映射到外部中斷控制器(EXTI)
? ? (2)硬件事件選擇
????????配置 23 事件線的屏蔽位 (EXTI_EMR)
????????配置事件線的觸發(fā)選擇位 (EXTI_RTSR and EXTI_FTSR)
? ? (3)軟件 中斷/事件 選擇
????????23 線可以被配置為軟件 中斷/事件 線。下面的操作步驟可以產生一個軟件中斷.
????????配置 23 事件/中斷 線的屏蔽位 (EXTI_IMR, EXTI_EMR)
????????設置軟件中斷寄存器的應答位 (EXTI_SWIER)
6.外部 中斷/事件 映射
????????STM32F407ZG 的 140 個 GPIO 引腳都與一個外部中斷線相連


????上述一共用到了16根 EXTI 線,其余 7 根 EXTI 線的連接使用如下:
????EXTI 16 連接到 PVD 輸出(PVD:掉電檢測)
????EXTI 17 連接到 RTC Alarm 事件
????EXTI 18 連接到 USB OTG FS Wakeup 事件
????EXTI 19 連接到 Ethernet Wakeup 事件
????EXTI 20 連接到 USB OTG HS (configured in FS) Wakeup 事件
????EXTI 21 連接到 RTC Tamper and TimeStamp 事件
????EXTI 22 連接到 RTC Wakeup 事件