没有调用GPIO_EXTILineConfig为什么也能进中断
[复制链接]
刚刚开始学习STM32,现在遇到一个问题,不明白是为什么。
我按照教程上写了一个最简单的中断程序,就是按键 然后进中断,点亮led 按键是 PA0,led是PA2
按照教程上的写法
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
PA2 设置为输出
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure);
PA0设置为输入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 ; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //选择输入模式为浮空输入 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //输出频率最大50MHz GPIO_Init(GPIOA,&GPIO_InitStructure);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3); NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
EXTI_InitStructure.EXTI_Line = EXTI_Line0; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure);
以上配置没有问题 进中断后能正常点亮小灯!
但是我自己试验了一下,我去掉 PA0 设置为输入这段代码,或者去掉GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);,或者两者都去掉
还是能正常点亮小灯! 这是为什么??
GPIO_EXTILineConfig这个函数的作用是什么?参数GPIO_PinSource0是不是必须和EXTI_InitStructure.EXTI_Line = EXTI_Line0一致,为同一个口?
最求高手赐教
|