STM32F429外部中断控制器EXTI执行过程
stm32f429控制器外部中断控制配置过程:
1,初始化要连接到外部中断/事件控制器的GPIO
主要包括:
-
定义GPIO_InitTypeDef 初始化结构体GPIO_InItStructure。
-
开启GPIO外设时钟。
-
选择要控制的GPIO引脚。
-
配置引脚输出模式。
-
配置引脚输出类型,推免或者开漏。
-
设置引脚上拉还是下拉
-
设置引脚输出速率。
-
将初始化结构体GPIO_InItStructure传入GPIO_Init(GPIOx,GPIO_InItStructure)。
2,初始化外部中断控制器EXTI
主要包括:
-
使能SYSCFG时钟,使用GPIO外部中断控制器必须使能SYSCFG时钟。
-
开启GPIO外设端口时钟。
-
设置GPIO的引脚,输入模式,上下拉模式,初始化GPIO按键。
-
选择EXTI中断源到对应的引脚SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOx,EXTI_PinSourcex)。SYSCFG_EXTILineConfig函数在库文件stm32f4xx_syscfg.c中定义。
-
选EXTI中断控制器的中断源,配置中断端口(EXTI_PortSourceGPIOA)和引脚号(EXTI_PinSource0)。
-
配置EXTI中断控制器的中断模式或者事件模式
-
调用EXTI_Init(&EXTI_InitStructure)函数,初始化中断控制器。
3,配置嵌套向量中断控制器NVIC。
-
调用NVIC_Configuration()函数。
-
设置优先级分组。(注意不同任务的优先级分组保持统一)
-
配置中断源EXTI0_IRQn。
-
配置抢占式优先级和子优先级。
-
使能中断或者失能中断。
4,编写中断服务函数
-
NVIC中断源中不同中断源对应的中断服务函数的函数名字在系统启动文件中的中断向量表中已经写好了,EXTI0_IRQn对应的函数名字为EXTI0_IRQHandler,具体实现写在stm32f4xx_it.c文件中,如果不手动实现,则出现中断会在汇编文件中进入死循环。
-
中断服务函数过程:
if(发生了中断)
{
处理中断;
清楚中断标志位;
}
5,main函数初始化
-
调用前面bsp中编写的初始化exti函数即可。