我现在做一个东西有用到10个按键,前期在画图时没有考虑到,导致现在按键对应GPIO口在中断时有重复,key1-PB12、key2-PB13、key3-PB14、key4-PD9、key5-PD10、key6-PD11、key7-PD12、key8-PD15、key9-PC6、key10-PA8、key1和key7下面配置中断还对?
void EXTI_KEY1_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
/* config the extiline(PC13) clock and AFIO clock */
//RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO,ENABLE);
/* config the NVIC(PB12) */
NVIC_Configuration();
/* EXTI line gpio config(PB12) */
GPIO_InitStructure.GPIO_Pin = PIN_KEY10 ; /********KEY1********/
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(PORT_KEY10, &GPIO_InitStructure);
/* EXTI line(PB12) mode config */
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource12);
EXTI_InitStructure.EXTI_Line = EXTI_Line12;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
}
void EXTI_KEY7_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_Configuration();
/* EXTI line gpio config(PD12) */
GPIO_InitStructure.GPIO_Pin = PIN_KEY4 ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(PORT_KEY4, &GPIO_InitStructure);
/* EXTI line(PD12) mode config */
GPIO_EXTILineConfig(GPIO_PortSourceGPIOD, GPIO_PinSource12);
EXTI_InitStructure.EXTI_Line = EXTI_Line12;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
}
在终端服务子程序中怎么判断?这时怎么判断是哪个按键在作用?
void EXTI15_10_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line12) != RESET) //
{
LED1_TOGGLE;
EXTI_ClearITPendingBit(EXTI_Line12); //
}
} |