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


????上述一共用到了16根 EXTI 線,其余 7 根 EXTI 線的連接使用如下:
????EXTI 16 連接到 PVD 輸出(PVD:掉電檢測(cè))
????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 事件