freescale的coldfire v1系列MCU基本都集成了多通道的KBI,按照字面意思是键盘中断。这几天调板子的过程中发现这个模块的一个特点。通常每个KBI模块有8个通道,但只有一个中断标志位,也就是说,8个通道中的任何一个触发了中断事件,都将设置同一个标志位,而且对应的中断服务程序也只有一个,这就需要在中断服务程序中判断到底是哪个通道发生了中断,并且清中断标志位。
我们发现的一个现象是:假设把8个通道都配置成检测下降沿,那么如果任意一个通道检测到下降沿,则会触发中断,在中断服务程序中清中断标志,处理完后,退出中断服务程序后,如果该通道仍然保持低电平,那么在它保持低电平的期间,其他通道即使检测到下降沿,也不会触发中断。
这就是为什么飞思卡尔把这个模块成为KBI,而不是如一般的外部中断的原因。因为它的这个特性非常适合实现键盘的按键检测,但却不适合用来做一般的外部事件检测。所以在应用过程中要注意这个问题。
用户834015 2010-4-4 20:48