STM32中EXTI和NVIC的關系


(1)NVIC(嵌套向量中斷):NVIC是Cortex-M3核心的一部分,關於它的資料不在《STM32的技術參考手冊》中,應查閱ARM公司的《Cortex-M3技術參考手冊》Cortex-M3的向量中斷統一由NVIC管理。

 

(2)EXTI(外部中斷):EXTI是ST公司在其STM32產品上擴展的外中斷控制。它負責管理映射到GPIO引腳上的外中斷和片內幾個集成外設的中斷(PVD,RTC alarm,USB wakeup,ethernet wakeup),以及軟件中斷。其輸出最終被映射到NVIC的相應通道。因此,配置EXTI中斷的過程必然包含對NVIC的配置,例如下面配置EXTI0的過程,就要首先配置EXTI控制器(使能相應的中斷線,選擇中斷/事件模式,觸發邊沿極性),然后再配置NVIC控制器(EXTI0映射在NVIC上的通道號,中斷優先級,中斷屏蔽狀態)。

 1 /* Connect EXTI Line 0 to GPIO Pin PB0 */
 2 
 3 GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource0);
 4 
 5  
 6 
 7 /* Configure EXTI line 0 */
 8 
 9 EXTI_InitStructure.EXTI_Line = EXTI_Line0;
10 
11 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
12 
13 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; // or Rising
14 
15 EXTI_InitStructure.EXTI_LineCmd = ENABLE;
16 
17 EXTI_Init(&EXTI_InitStructure);
18 
19 /* Enable this interrupt on corresponding NVIC channel */
20 
21 NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; // EXTI0_IRQn is defined in stm32f10x.h
22 
23 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
24 
25 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
26 
27 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
28 
29 NVIC_Init(&NVIC_InitStructure);

其中EXTI0_IRQn的值,其實就是EXTI0中斷向量在中斷向量表中的位置(STM32技術參考手冊中斷向量表Position欄中的數值)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM