void PC13_14_15_Gpio(void)//PC13 PC14 PC15配置为普通IO浮空外部上拉输入
{
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO,ENABLE );
PWR_BackupAccessCmd( ENABLE );/* 允许修改RTC和后备寄存器*/
RCC_LSEConfig( RCC_LSE_OFF ); /* 关闭外部低速时钟,PC14+PC15可以用作普通IO*/
BKP_TamperPinCmd(DISABLE); /* 关闭入侵检测功能,PC13可以用作普通IO*/
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 |GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOA
tiNG; //外部上拉,浮空输入
GPIO_Init(GPIOC, GPIO_InitStructure);
PWR_BackupAccessCmd(DISABLE);/* 禁止修改RTC和后备寄存器*/
//BKP_ITConfig(DISABLE); ? ? ? /* 禁止TAMPER 中断*/
}
void EXTI0_Config(void)//外部中断配置
{
/* Enable GPIOA clock */
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
NVIC_InitTypeDef NVIC_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line = EXTI_Line13|EXTI_Line14|EXTI_Line15;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init( EXTI_InitStructure);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource13|GPIO_PinSource14|GPIO_PinSource15);
NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init( NVIC_InitStructure);
}
void EXTI15_10_IRQHandler(void) //即使PC13 PC14 PC15电平没有变化,也一直进中断
{
if(EXTI_GetITStatus(EXTI_Line13|EXTI_Line14|EXTI_Line15)!=RESET)//
{
EXTI_ClearITPendingBit(EXTI_Line13|EXTI_Line14|EXTI_Line15); //即使PC13 PC14 PC15脚电平没有变化,也一直进外部中断
}
}
各位大佬,我这个是用PC13 PC14 PC15作为外部中断输入口的配置,有外部上拉电阻,为什么会一直进中断,即使外部电平没有变化