开发环境:ADS1.2
在使用LPC2103的三个外部中止作为按键输入时,slot0寄存EINT0,slot1寄存EINT1,slot2寄存EINT2。
下面分三种状况阐明
(1)假如首先是EINT2进入中止,那么EINT1和EINT0仍是能够进入中止的;
(2)假如首先是EINT1进入中止,那么EINT2就进不去中止处理程序了,可是EINT0仍是能够进入中止的;
(3)假如首先是EINT0进入中止,那么EINT1和EINT0就都无法进入中止的
并且不管是EINT0,EINT1仍是EINT2,都只能进入一次中止,第2次就无法进入了。
针对以上外部中止中的bug,自己进行了屡次重复的试验,发现在中止处理程序里边把VICVectAddr 的值从头修正为0今后,能够处理上述问题。
在中止处理程序的最终写VICVectAddr =0是为了更新硬件优先级。
以上处理方法是建立在程序正确,唯一在中止处理程序中没有修正VICVectAddr 的状况