void Key_Init(void)
{
GPIO_InitTypeDef g;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);
g.GPIO_Pin=GPIO_Pin_4;
g.GPIO_Mode=GPIO_Mode_IPU;
GPIO_Init(GPIOE,&g);
}
void exti_Init(void)
{
Key_Init();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource4);
EXTI_InitTypeDef e;
e.EXTI_Line=EXTI_Line4;
e.EXTI_Mode=EXTI_Mode_Interrupt;
e.EXTI_Trigger=EXTI_Trigger_Falling;
e.EXTI_LineCmd=ENABLE;
EXTI_Init(&e);
NVIC_InitTypeDef n;
n.NVIC_IRQChannel=EXTI4_IRQn;
n.NVIC_IRQChannelPreemptionPriority=1;
n.NVIC_IRQChannelSubPriority=0;
n.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&n);
}
void EXTI4_IRQHandler(void)
{
EXTI_ClearITPendingBit(EXTI_Line4);
}
外部中断的配置步骤以及注意事项
Step1.按键初始化 略
Step2.EXTI_Init初始化外部中断
Step3.使用中断初始化函数初始化中断NVIC
注意 中断号位于stm32f10x.h文件中
Step4.编写中断服务函数
注意 中断服务函数名位于启动文件中
来源:https://www.cnblogs.com/AdamChen/p/12177619.html