探索者 外部中断工作模式只能是上升沿有效,改不了。。。。

2019-07-20 10:02发布


还请各位大佬指教一下,怎么设置成下降沿有效。。。。。多谢各位大佬了



        EXTI_InitStruct.EXTI_Line=EXTI_Line2;
        EXTI_InitStruct.EXTI_LineCmd=ENABLE;
        EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;
        EXTI_InitStruct.EXTI_Trigger=EXTI_Trigger_Rising_Falling;////////这段是设置外部中断是上升沿有效还是下降沿有效的,我试了3种模式,都是在按键按下在松手后才会反应。
        EXTI_Init(&EXTI_InitStruct);


下面的事库函数里面关于上升沿还是下降沿触发的枚举
typedef enum
{
  EXTI_Trigger_Rising = 0x08,
  EXTI_Trigger_Falling = 0x0C,  
  EXTI_Trigger_Rising_Falling = 0x10
}EXTITrigger_TypeDef;

#define IS_EXTI_TRIGGER(TRIGGER) (((TRIGGER) == EXTI_Trigger_Rising) ||
                                  ((TRIGGER) == EXTI_Trigger_Falling) ||
                                  ((TRIGGER) == EXTI_Trigger_Rising_Falling))


这是我的中断服务函数
void EXTI2_IRQHandler ()
{
        delay_ms(10);
        if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2))
        {
                EXTI_ClearITPendingBit(EXTI_Line2);
                if(GPIO_ReadInputDataBit(GPIOF,GPIO_Pin_9))
                        GPIO_ResetBits(GPIOF,GPIO_Pin_9);  //LED亮
                else
                        GPIO_SetBits(GPIOF,GPIO_Pin_9);    //LED灭
        }
}



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。