一、外部中断概述
STM32F4的每个IO都可以作为外部中断输入。STM32F4的中断控制器支持22个外部中断/事件请求。 EXTI线0~15:对应外部IO口的输入中断 EXTI线16:连接到PVD输出 EXTI线17:连接到RTC闹钟事件 EXTI线18:连接到USB OTG FS唤醒事件 EXTI线19:连接到以太网唤醒事件 EXTI线20:连接到USB OTG (HS中配置)唤醒事件 EXTI线21:连接到RTC入侵和时间戳事件 EXTI线22:连接到RTC唤醒事件 每个外部中断线可以独立的配置触发方式(上升沿、下降沿、双边沿触发)等等。 中断映射关系: 中断服务函数: 外部中断线5~9分配一个中断向量,共用一个服务函数。 外部中断线10~15分配一个中断向量,共用一个中断服务函数。
二、常用库函数
①void SYSCFG_EXTILineConfig(uint8_t EXTI_PortSourceGPIOx, uint8_t EXTI_PinSourcex); //设置IO口与中断线的映射关系
②void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct) ;` //初始化中断线:触发方式等
③ITStatus EXTI_GetITStatus(uint32_t EXTI_Line); //判断中断线中断状态,是否发生
④void EXTI_ClearITPendingBit(uint32_t EXTI_Line); //清除中断线上的中断标志位
⑤RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); //使能SYSCFG时钟 //这个函数非常重要,在使用外部中断的时候一定要先使能SYSCFG时钟 使用外部中断的一般配置步骤: 1、使能SYSCFG时钟:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
2、初始化IO口为输入。
GPIO_Init();
3、设置IO口与中断线的映射关系。
void SYSCFG_EXTILineConfig();
4、初始化线上中断,设置触发条件等。
EXTI_Init();
5、配置中断分组(NVIC),并使能中断。
NVIC_Init();
6、 编写中断服务函数。
EXTIx_IRQHandler();
7、清除中断标志位
EXTI_ClearITPendingBit();
外部中断的讲解就到这里!!!
|