0
点赞
收藏
分享

微信扫一扫

EXTI中断程序实例


程序功能:使用EXTI中断实现按键点亮LED。按键一次,LED状态翻转一次。

在程序中开启GPIOE.2的中断线2。并设置为下降沿触发中断。

//exti.h

​​#ifndef __EXTI_H__​​       

​​#define __EXTI_H__​​



​​#include "stm32f10x.h"​​

​​#include "MyTime.h"​​

​​#include "bitband.h"​​



​​void​​ ​​EXTI_Configuration(​​ ​​void​​ ​​);​​

​​void​​ ​​EXTI2_IRQHandler(​​ ​​void​​ ​​) ;​​



​​#endif​​

//exti.c

​​#include "exti.h"​​       

​​#include "key.h"​​



​​void​​ ​​EXTI_Configuration(​​ ​​void​​ ​​)​​

​​{​​

​​EXTI_InitTypeDef EXTI_InitStruct;​​

​​NVIC_InitTypeDef NVIC_InitStruct;​​

​​//1)初始化 IO 口为输入​​

​​KEY_Configuration();​​



​​//2)开启 IO 口复用时钟,设置 IO 口与中断线的映射关系。​​

​​RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); ​​

​​GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource2);​​



​​//3)初始化线上中断,设置触发条件等​​

​​EXTI_InitStruct.EXTI_Line = EXTI_Line2;​​

​​EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;​​

​​EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Falling;​​

​​EXTI_InitStruct.EXTI_LineCmd = ENABLE;​​



​​EXTI_Init(&EXTI_InitStruct);​​



​​//4)配置中断分组(NVIC),并使能中断 ​​

​​NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);​​



​​NVIC_InitStruct.NVIC_IRQChannel = EXTI2_IRQn; ​​

​​NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 2;​​

​​NVIC_InitStruct.NVIC_IRQChannelSubPriority = 2;​​

​​NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;​​



​​NVIC_Init(&NVIC_InitStruct);​​

​​}​​



​​//5)编写中断服务函数。 ​​

​​void​​ ​​EXTI2_IRQHandler(​​ ​​void​​ ​​) ​​

​​{ ​​

​​MyDelay_ms(10); ​​ ​​//消抖 ​​

​​if​​ ​​(KEY2==0) ​​ ​​//按键KEY2 ​​

​​{ ​​

​​LED0=!LED0; ​​

​​} ​​

​​EXTI_ClearITPendingBit(EXTI_Line2); ​​ ​​//清除 LINE2 上的中断标志位 ​​

​​}​​


//main.c

​​#include "MyTime.h"​​       

​​#include "exti.h"​​



​​int​​ ​​main(​​ ​​void​​ ​​)​​

​​{​​

​​MySysTick_Init();​​

​​//点亮灯​​

​​GPIO_Configuration();​​



​​EXTI_Configuration(); ​​



​​while​​ ​​(1);​​



​​}​​

注:使用IO 口外部中断的一般步骤: 

​​1)初始化 IO 口为输入。 ​​        ​​//KEY_Configuration​​       

​​2)开启 IO 口复用时钟,设置 IO 口与中断线的映射关系。 ​​

​​3)初始化线上中断,设置触发条件等。 ​​

​​4)配置中断分组(NVIC),并使能中断。 ​​

​​5)编写中断服务函数。​​

举报

相关推荐

0 条评论