帮忙看下代码,按C13按键不起作用呢?void key_init(void) { GPIO_InitTypeDef GPIO_Initstruct; EXTI_InitTypeDef EXTI_Initstruct; NVIC_InitTypeDef NVIC_Initstruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIOENABLE);//GPIOC时钟使能以及复用时钟使能 GPIO_Initstruct.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_13; GPIO_Initstruct.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Initstruct.GPIO_Mode=GPIO_Mode_IPU;//按键输入上拉直接用BSRR寄存器置位 GPIO_Init(GPIOC&GPIO_Initstruct); GPIO_EXTILineConfig(GPIO_PortSourceGPIOCGPIO_PinSource1);//中断线1配置 EXTI_Initstruct.EXTI_Line=EXTI_Line1;// EXTI_Initstruct.EXTI_LineCmd=ENABLE;// EXTI_Initstruct.EXTI_Mode=EXTI_Mode_Interrupt;// EXTI_Initstruct.EXTI_Trigger=EXTI_Trigger_Falling;//下降沿触发 EXTI_Init(&EXTI_Initstruct); GPIO_EXTILineConfig(GPIO_PortSourceGPIOCGPIO_PinSource13);//中断线13配置 EXTI_Initstruct.EXTI_Line=EXTI_Line13;// EXTI_Initstruct.EXTI_LineCmd=ENABLE;// EXTI_Initstruct.EXTI_Mode=EXTI_Mode_Interrupt;// EXTI_Initstruct.EXTI_Trigger=EXTI_Trigger_Falling;//下降沿触发 EXTI_Init(&EXTI_Initstruct); NVIC_Initstruct.NVIC_IRQChannel=EXTI1_IRQn;//设置中断通道 NVIC_Initstruct.NVIC_IRQChannelPreemptionPriority=0x01;//设置抢占优先级 NVIC_Initstruct.NVIC_IRQChannelSubPriority=0x01;//设置子优先级 NVIC_Initstruct.NVIC_IRQChannelCmd=ENABLE;//IRQ通道使能 NVIC_Init(&NVIC_Initstruct);//中断初始化 NVIC_Initstruct.NVIC_IRQChannel=EXTI15_10_IRQn;//设置中断通道 NVIC_Initstruct.NVIC_IRQChannelPreemptionPriority=0x01;//设置抢占优先级 NVIC_Initstruct.NVIC_IRQChannelSubPriority=0x02;//设置子优先级 NVIC_Initstruct.NVIC_IRQChannelCmd=ENABLE;//IRQ通道使能 NVIC_Init(&NVIC_Initstruct);//中断初始化 }
void key_init(void) { GPIO_InitTypeDef GPIO_Initstruct; EXTI_InitTypeDef EXTI_Initstruct; NVIC_InitTypeDef NVIC_Initstruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIOENABLE);//GPIOC时钟使能以及复用时钟使能 GPIO_Initstruct.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_13; GPIO_Initstruct.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Initstruct.GPIO_Mode=GPIO_Mode_IPU;//按键输入上拉直接用BSRR寄存器置位 GPIO_Init(GPIOC&GPIO_Initstruct); GPIO_EXTILineConfig(GPIO_PortSourceGPIOCGPIO_PinSource1);//中断线1配置 EXTI_Initstruct.EXTI_Line=EXTI_Line1;// EXTI_Initstruct.EXTI_LineCmd=ENABLE;// EXTI_Initstruct.EXTI_Mode=EXTI_Mode_Interrupt;// EXTI_Initstruct.EXTI_Trigger=EXTI_Trigger_Falling;//下降沿触发 EXTI_Init(&EXTI_Initstruct); GPIO_EXTILineConfig(GPIO_PortSourceGPIOCGPIO_PinSource13);//中断线13配置 EXTI_Initstruct.EXTI_Line=EXTI_Line13;// EXTI_Initstruct.EXTI_LineCmd=ENABLE;// EXTI_Initstruct.EXTI_Mode=EXTI_Mode_Interrupt;// EXTI_Initstruct.EXTI_Trigger=EXTI_Trigger_Falling;//下降沿触发 EXTI_Init(&EXTI_Initstruct); NVIC_Initstruct.NVIC_IRQChannel=EXTI1_IRQn;//设置中断通道 NVIC_Initstruct.NVIC_IRQChannelPreemptionPriority=0x01;//设置抢占优先级 NVIC_Initstruct.NVIC_IRQChannelSubPriority=0x01;//设置子优先级 NVIC_Initstruct.NVIC_IRQChannelCmd=ENABLE;//IRQ通道使能 NVIC_Init(&NVIC_Initstruct);//中断初始化 NVIC_Initstruct.NVIC_IRQChannel=EXTI15_10_IRQn;//设置中断通道 NVIC_Initstruct.NVIC_IRQChannelPreemptionPriority=0x01;//设置抢占优先级 NVIC_Initstruct.NVIC_IRQChannelSubPriority=0x02;//设置子优先级 NVIC_Initstruct.NVIC_IRQChannelCmd=ENABLE;//IRQ通道使能 NVIC_Init(&NVIC_Initstruct);//中断初始化 }
void EXTI1_IRQHandler(void)//外部中断1服务函数 { delay_ms(10); if(EXTI_GetITStatus(EXTI_Line1))//未进入中断 { led0=!led0; } EXTI_ClearITPendingBit(EXTI_Line1);//清除中断标志 } void EXTI15_10_IRQHandler(void) { delay_ms(10); //消抖 if(EXTI_GetITStatus(EXTI_Line13)) { led1=!led1; } EXTI_ClearITPendingBit(EXTI_Line13); //清除EXTI13线路挂起位 }