a06041114 发表于 2017-9-14 19:05:51

在外部中断函数中,能直接改变中断触发方式吗


比如我外部触发设置为上升沿触发,检测到上升沿中断然后进入中断函数中,把触发方式改为下降沿,反之改为上升沿
void EXTI0_IRQHandler(void)
{
      delay_ms(10);//消抖
      if(WK_UP==1)                  //WK_UP按键
      {      .........                        
                EXTI->FTSR|=1<<0; //改为下降沿
                ....
      }
      else if(WK_UP==1)                  //WK_UP按键
      {      .........                        
                EXTI->RTSR|=1<<0;   //改为上升沿
                .........
      }
      EXTI_ClearITPendingBit(EXTI_Line0); //清除LINE0上的中断标志位
}
这样写成不,还是说有其它外部中断寄存器还需要改动

MrJiu 发表于 2017-9-15 09:41:51

是可以改的,但是也有是有前提的。。。。就是如果速度太快了,可能会漏掉。。。。

a06041114 发表于 2017-9-15 12:55:20

MrJiu 发表于 2017-9-15 09:41
是可以改的,但是也有是有前提的。。。。就是如果速度太快了,可能会漏掉。。。。 ...

恩,速度不快的,简单测试了一下,可以,就怕整合到项目里出错

发表于 2017-9-15 16:35:15

可以考虑边沿触发,进去以后直接读取IO状态。
页: [1]
查看完整版本: 在外部中断函数中,能直接改变中断触发方式吗