标题: STM32F103外部中断设下降沿 函数内检测端口电压有时为正 [打印本页]

作者: litingkun    时间: 2025-8-19 14:21
标题: STM32F103外部中断设下降沿 函数内检测端口电压有时为正
STM32F103 外部中断设置为下降沿触发并在中断函数内检测用端口电压有时为高电平,请问是由于误触发导致的吗,还是配置有问题,输入信号是按键给的。
初始化程序
void exti0_init(void(*f)(uint8_t,uint8_t),uint8_t item){
    exti_flag = -1;         
    exti_cp = f;           
    exit_item = item;      
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO,ENABLE);   
    GPIO_InitTypeDef GPIO_InitStructure;           
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;      
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;   
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
    GPIO_Init(GPIOE, &GPIO_InitStructure);
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource3);
    EXTI_InitTypeDef EXTI_InitStructure;                                
    EXTI_InitStructure.EXTI_Line    =  EXTI_Line3;                     
    EXTI_InitStructure.EXTI_Mode =  EXTI_Mode_Interrupt;               
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;                          
    EXTI_Init(&EXTI_InitStructure);                                    
    NVIC_InitTypeDef NVIC_InitStructure;                       
    NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn ;         
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;         
    NVIC_InitStructure.NVIC_IRQChannelCmd = DISABLE;         
    NVIC_Init(&NVIC_InitStructure);                           
}
void EXTI3_IRQHandler(void){
    if(EXTI_GetITStatus(EXTI_Line3) != RESET){           
        #ifdef DEBUG_ENABLE
            printf("EXIT3 trigger:%d\n",GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_3));
        #endif
        EXTI_ClearITPendingBit(EXTI_Line3);           
        while(EXTI_GetITStatus(EXTI_Line3) != RESET);   
    }
}



作者: 人中狼    时间: 2025-8-19 15:49
端口复用功能不应该开启,中断向量设置为什么是DISABLE,可以找个例程,对比一下




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1