刚开始看C2000,看到中断这里有点疑问。CPU响应中断后,清除IER,IFR,EALLOW,并且INTM置1.同时,PIEACKx被置位。在中断处理子函数中,执行完操作以后,清除外设的中断标志位,清除PIEACKx,开启全局中断,请问CPU的IER为何没有重新置位?之前我自己写的程序中都没有加IER置位的指令,但是可以正常运行。书上的例程也都没有,有的例程甚至连EINT和清除外设的中断标志位的指令都没有。求解答
Eric Ma:
C2000的外设中断分三级,外设级别,PIE级别,还有CPU级别,如果要使能,则要三个级别对应使能。当进入中断响应后,则需要清除相关标志位,主要是外设级别中断标志清除,PIEACK即可。CPU级别会自动清除。
ERIC
,
pengcheng hao:
CPU级的IER到中断响应阶段会自动清除,但是我没有看到手册上写会恢复,那IER都是0了为什么还会响应中断?
,
Eric Ma:
不好意思,不是IER,是IFR。即CPU级别的中断标志位。
ERIC
,
mangui zhang:
自动清除 只是为了能进下一次中断
只能关闭了相关通路上的开关 才会关闭中断
,
user5891914:
今天我读手册的时候也发现了这个地方,同时回去看例程发现没有重新set IER,我就怀疑是TI手册写错了,实际看来应该是这样的。另外TI手册也没有提到外设中断标志位是否自动被清除。还有就是INTM是否会自动恢复。感觉手册还是有很多不完善的地方。