STM32外部中断5-9,10-15的应用解析
STM32有些系列(比如STM32F407)的外部中断5-9是共用一个中断处理函
数EXTI9_5_IRQHandler(),外部中断10-15共用中断函数EXTI15_10_IRQHandler(),所以很多人(包括我自己)刚开始时对于这些外部中断线的设置以及判断都不是弄得
很清楚,下面就直接贴出中断引脚的配置、中断配置以及进入中断之后的判断处理程序。
外部中断引脚的IO初始化:
void GPIOX_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOE, ENABLE);//使能GPIOB,GPIOE时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//普通输入模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100M
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;//下拉
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOB5
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//普通输入模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100Ms
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
GPIO_Init(GPIOE, &GPIO_InitStructure);//初始化GPIOE7
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//普通输入模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100M
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;//下拉
GPIO_Init(GPIOE, &GPIO_InitStructure);//初始化GPIOE9