8.STM32之EXIT外部中斷
阿新 • • 發佈:2018-12-09
每個IO口都可以作為一個外部中斷輸入,但只有7條外部中斷線。
流程:
1.時鐘使能
2.GPIO配置
3.IO口和中斷線的對映
4.NVIC設定,使能
5.中斷服務函式的處理
6.進入中斷後即可清除中斷標誌位
#include <exti_con.h> #include <stm32f4xx_exti.h> #include <key.h> #include <delay.h> #include <led.h> void EXTI_Con(){ RCC_APB2PeriphResetCmd(RCC_APB2Periph_EXTIT,ENABLE); Key_Init(); SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE,EXTI_PinSource4); EXTI_InitTypeDef EXTI_Struct; NVIC_InitTypeDef Nvic1; EXTI_Struct.EXTI_Line=EXTI_Line4; EXTI_Struct.EXTI_Mode=EXTI_Mode_Interrupt; EXTI_Struct.EXTI_Trigger=EXTI_Trigger_Falling; EXTI_Struct.EXTI_LineCmd=ENABLE; EXTI_Init(&EXTI_Struct); Nvic1.NVIC_IRQChannel=EXTI4_IRQn; Nvic1.NVIC_IRQChannelPreemptionPriority=1; Nvic1.NVIC_IRQChannelSubPriority=1; Nvic1.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&Nvic1); } void EXTI4_IRQHandler(void){ Delay_ms(10); if(Key_Scan()){ Led_Init(); } EXTI_ClearITPendingBit(EXTI_Line4); //EXTI_ClearFlag(EXTI_Line4); }