1,EXTI_InitTypeDef 定义于文件“stm32f10x_exti.h”:
typedef struct
{
u32 EXTI_Line; //外部中断通用I/O映像
EXTIMode_TypeDef EXTI_Mode; //模式
EXTIrigger_TypeDef EXTI_Trigger; //触发方式
FunctionalState EXTI_LineCmd; //使能
} EXTI_InitTypeDef;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
2,例子:
void EXTI_Configuration(void)
{
EXTI_InitTypeDef EXTI_InitStructure;
EXTI_ClearITPendingBit(EXTI_Line2);//清除外部中断线2中断挂起位,为了防止配置后无法马上产生中断服务、二异性
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource2);//选择 GPIO 管脚PC2用作外部中断线路
EXTI_ClearITPendingBit(EXTI_Line5);//清除外部中断线5中断挂起位
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource5); //选择 GPIO 管脚PC5用作外部中断线路
EXTI_InitStructure.EXTI_Line=EXTI_Line2|EXTI_Line5;/*EXTI_Line选择了待使能或失能的外部线路,只能用'或'的形式给一个以上(即多个)线路选择 不能使用这种格式:(即使用两次EXTI_Line结构体) EXTI_InitStructure.EXTI_Line=EXTI_Line5;EXTI_InitStructure.EXTI_Line=EXTI_Line2;*/
EXTI_ClearITPendingBit(EXTI_Line5);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource5);
EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd=ENABLE;
EXTI_Init(&EXTI_InitStructure);
}