在看2440--datasheet的中断的时候注意到、必须在清除INTPND之前必须先将SRCPND清除掉,
因为是SRCPND经过仲裁之后导致INTPND的相应位置1.那时并没注意到SUBSRCPND。
今天消耗了一天了解到、SUBSRCPND导致SRCPND中的相应位置1,
所以在清除SRCPND之前必须先将SUBSRCPND清除掉,如果用到子中断的话。
即、中断标志的清除顺序 : SUBSRCPND-->SRCPND-->INTPND。
否则中断源倒是清除了、但是中断标志INTPND并没有被清除,就会被中断锁死。
比如使用ADC中断时、清除顺序 :
rSUBSRCPND = BIT_SUB_ADC_S;
rSRCPND = BIT_ADC;
rINTPND = rINTPND;
在AXD中看到异常向量表中的内容正确(特别注意IRQ)、
又看到IRQ中断向量表中的内容正确、
最后看到ADC中断向量空间中的地址也是中断处理函数的入口地址,
当然进中断就没问题啦。
却不料是出不了中断。 |