STM32 外部(IO)中断EXTI的应用 作者: 时间:2016-11-25 来源:网络 加入技术交流群 扫码加入和技术大咖面对面交流海量资料库查询 收藏 a)目的:跟串口输入类似,不使用中断进行的IO输入效率也很低,而且可以通过EXTI插入按钮事件,本节联系EXTI中断。b)初始化函数定义:voidEXTI_Configuration(void);//定义IO中断初始化函数c)初始化函数调用:EXTI_Configuration();//IO中断初始化函数调用简单应用:d)初始化函数:voidEXTI_Configuration(void){EXTI_InitTypeDefEXTI_InitStructure;//EXTI初始化结构定义EXTI_ClearITPendingBit(EXTI_LINE_KEY_BUTTON);//清除中断标志GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource3);//管脚选择GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource4);GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource5);GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource6);EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;//事件选择EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;//触发模式EXTI_InitStructure.EXTI_Line=EXTI_Line3|EXTI_Line4;//线路选择EXTI_InitStructure.EXTI_LineCmd=ENABLE;//启动中断EXTI_Init(&EXTI_InitStructure);//初始化}e)RCC初始化函数中开启I/O时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO初始化函数中定义输入I/O管脚。//IO输入,GPIOA的4脚输入GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//上拉输入GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化f)在NVIC的初始化函数里面增加以下代码打开相关中断:NVIC_InitStructure.NVIC_IRQChannel=EXTI9_5_IRQChannel;//通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//占先级NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;//响应级NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//启动NVIC_Init(&NVIC_InitStructure);