chenhuiqing 发表于 2022-9-6 13:19:32

EXTI中断,按键一次,进入两次,该如何处理

void MF_EXTI_Line1_Init(void)
{
    FL_GPIO_InitTypeDef    GPIO_InitStruct;

    FL_EXTI_InitTypeDef    EXTI_InitStruct;

//   GPIO_COMMON_Type       GPIO_Init;

    /* PA6 EXTI1_Select2 */
    GPIO_InitStruct.pin = FL_GPIO_PIN_6;
    GPIO_InitStruct.mode = FL_GPIO_MODE_INPUT;
    GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
    GPIO_InitStruct.pull = FL_ENABLE;
    GPIO_InitStruct.remapPin = NULL;
    FL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    EXTI_InitStruct.input = FL_GPIO_EXTI_INPUT_GROUP2;
    EXTI_InitStruct.triggerEdge = FL_GPIO_EXTI_TRIGGER_EDGE_FALLING;
    EXTI_InitStruct.filter = FL_ENABLE;

    FL_EXTI_Init(FL_GPIO_EXTI_LINE_1, &EXTI_InitStruct);

    /*设置中断触发*/
    FL_GPIO_SetTriggerEdge(GPIO,FL_GPIO_EXTI_LINE_1,FL_GPIO_EXTI_TRIGGER_EDGE_FALLING);
    FL_GPIO_SetExtiLine1(GPIO, FL_GPIO_EXTI_LINE_1_PA6);
}
//中断处理
void GPIO_IRQHandler()
{
    if(GPIO->EXTIISR & (0x1 << 1))
    {
      FL_GPIO_ClearFlag_EXTI(GPIO, FL_GPIO_EXTI_LINE_1);
      displayhz16(0,0,test);         //
      test ++;
    }

顾博文 发表于 2022-9-7 08:29:53

1、用示波器看按键波形。有没有毛刺。
2、如果有毛刺。自己加滤波,进入中断后,等一个小延时。再判断下io口的电平。
页: [1]
查看完整版本: EXTI中断,按键一次,进入两次,该如何处理