STM32 中斷控制線支持 19個外部中斷 /事件請求,每個中斷都有對應狀態位和獨立的觸發與屏蔽設置。 STM32F103的 19個外部中斷為:
線 0-15:對應 GPIO口的輸入中斷。
線 16:連接到 PVD 輸出(掉電檢測,掉電時可立即保存重要數據作用 )。
線 17:連接 RTC鬧鐘事件。
線 18:連接到 USB 喚醒事件。
每個 IO 口都可作為外部中斷輸入口的 STM32 的 IO 口遠多于 16個,而 IO 口使用的中斷線只有 16個。為此,GPIO管腳 GPIOx.0~GPIOx.15(X=A,F,G)分別對應中斷線 0-15.這 樣 每 個 中 斷 線 對 應 了 7 個 IO 口 。 如 線 0 對 應 著
GPIOA.0,GPIOB.0,GPIOC.0,GPIOD.0,GPIOE.0,GPIOF.0,GPIOG .0 但是每個中斷線每次只能連接到 1 個 IO 口上。
0.png (66.67 KB, 下載次數: 46)
下載附件
2018-4-26 17:49 上傳
0.png (65.05 KB, 下載次數: 74)
下載附件
2018-4-26 17:49 上傳
GPIO 與中斷映射配置通過函數來實現
void GPIO_EXTILineConfig ( uint8_t GPIO_PortSource,
uint8_t GPIO_PinSource
)
例如:
GPIO_EXTILineConfig(GPIO_PortSourceGPIOE , GPIO_PinSource2);
即外部中斷線 2 就和 GPIOE 映射起來了,顯然是 GPIOE.2與 EXTI2 中斷線連接
起來了。
接著需設置中斷觸發方式:
void EXTI_Init ( EXTI_InitTypeDef * EXTI_InitStruct )
例如:
EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line=EXTI_Line4;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
以上例子設置了中斷線 line4 的中斷為下降沿觸發。
設置好了中斷線和 GPIO 的映射關系,然后又設置好了中斷的觸發模式等參數。
既然是外部中斷,設計到中斷我們當然需要設置 NVCI 的中斷優先級。
0.jpg (79.08 KB, 下載次數: 41)
下載附件
2018-4-26 17:50 上傳
完整的pdf格式文檔51黑下載地址(共3頁):
STM32之外部中斷EXTI.pdf
(165.37 KB, 下載次數: 17)
2018-4-26 16:30 上傳
點擊文件名下載附件
stm32外部中斷實驗 下載積分: 黑幣 -5
|