GPIO配置外部中断初始化的步骤:
1、配置RCC,打开时钟;
2、配置GPIO选择端口,输入模式;
3、配置AFIO;
4、配置EXTI,选择边沿触发方式和触发响应方式;
5、配置NVIC;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //APB2时钟使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO ,ENABLE); //时钟使能,
GPIO_InitTypeDef GPIO_InitStructure; // GPIO初始化结构体
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // 推挽模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14; // 管脚B5作为输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //时钟频率
GPIO_Init(GPIOB, &GPIO_InitStructure);
//AFIO外设配置
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource14);
//配置EXTI
EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line=EXTI_Line14;
EXTI_InitStructure.EXTI_LineCmd=ENABLE;
EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising;
EXTI_Init(&EXTI_InitStructure);
//配置NVAC
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitTypeDef NVIC_InitStruct;
NVIC_InitStruct.NVIC_IRQChannel=EXTI15_10_IRQn;
NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;
NVIC_InitStruct.NVIC_IRQChannelSubPriority=2;
NVIC_Init(&NVIC_InitStruct);