1、外部中断初始化代码
- #include "bsp_exti.h"
- /*
-     EXTI_Mode_Interrupt = 0x00,
-     EXTI_Mode_Event = 0x04
- */
- /*
-     EXTI_Trigger_Rising = 0x08,
-     EXTI_Trigger_Falling = 0x0C,  
-     EXTI_Trigger_Rising_Falling = 0x10
- */
- void BSP_EXTI_INIT()
- {
-     //打开时钟
-     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
-     RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
-     //引脚初始化
-     {
-         GPIO_InitTypeDef GPIO_InitStruct;
-         GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_2;
-         GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;
-         GPIO_Init(GPIOB,&GPIO_InitStruct);
-     }
-     //中断线初始化
-     {
-         EXTI_InitTypeDef EXTI_InitStructure;
-         EXTI_InitStructure.EXTI_Line    = EXTI_Line2;    
-         EXTI_InitStructure.EXTI_Mode    = EXTI_Mode_Interrupt;    
-         EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
-         EXTI_InitStructure.EXTI_LineCmd = ENABLE;
-         EXTI_Init(&EXTI_InitStructure);
-         //初始化中断线
-         GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource2);
-     }
-     //NVIC初始化
-     {
-         NVIC_InitTypeDef NVIC_InitStructure;
-         NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;            //使能外部中断通道
-         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;    //抢占优先级2, 
-         NVIC_InitStructure.NVIC_IRQChannelSubPriority =        0;    //子优先级0
-         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                //使能外部中断通道
-         NVIC_Init(&NVIC_InitStructure); 
-     }
- }
2、中断函数使用
- void EXTI2_IRQHandler(void)
- {
-     EXTI_ClearITPendingBit(EXTI_Line2); 
- }