个人认为多路采集脉冲等信号,使用KBI等外部中断没有意义,直接用定时器中断进行多次检测去抖比较合适,至于是在中断中就直接处理还是在主循环中处理无所谓(我所指的处理只限于去抖过程,至于去抖后的事件处理一定要在主循环中执行,这是必须的),比如检测一个20ms的脉冲,可以定时1ms的定时器中断,连续检测20次以上脉冲电平就置该标志,然后在主循环中查询标志进行处理即可,或者像楼上的说的一样,直接在中断中置1ms标志然后在主循环中查询标志再去抖也行(至于这两种方法那种实时性更好,大家可以讨论一下,就我个人而言,我认为前者好点或者说差不多,因为最后要做到的效果是不管哪种方法都要一次不能错过的检测到信号,所以我选择了前者,而两种的处理实时性我感觉应该是一致的,所以个人认为两者皆可),但楼主的做法是绝对不行的,中断中坚决不能有延时,就算支持多重嵌套,估计也能把你给套牢了哈哈! |