根据TI官方的文档,28335进入中断后 CPU responds IFRx=0, IERx=0 INTM=1, EALLOW=0 如果IERx=0,那么后面的中断怎么进入, 在中断服务程序中也没有将IERx置位,但是人工将INTM=0,可不可以这样理解,CPU将 IERx保存至堆栈,中断程序执行后,恢复现场。。。
求专业解答
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
看了一下下面描述:
The address for the interrupt service routine that is executed is fetched directly from the PIE interrupt
vector table. There is one 32-bit vector for each of the possible 96 interrupts within the PIE. Interrupt flags
within the PIE module (PIEIFRx.y) are automatically cleared when the interrupt vector is fetched. The PIE
acknowledge bit for a given interrupt group, however, must be cleared manually when ready to receive
more interrupts from the PIE group.
这边描述是对的,只有上面的框图是错的,不能完全相信文档,要自己做实践
手册中并没有写错,进入中断后IERx的确是被清0了,是CPU responds。
但是手册里没有写明IERx如何恢复成1,从跟踪结果看,退出中断函数后,IERx自动变成1,感觉这个动作应该也是CPU responds。
再有就是进入中断后INTM置1,退出中断后INTM也是自动至0,并不需要在退出中断函数前添加EINT语句。
C2000默认是不支持中断嵌套的,因此如果需要中断嵌套,则需要手动打开总中断使能,如果嵌套的中断来源于同一个PIEX组,则还需要打开IERX,并且还要清除PIEACKX等。