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.

定时器timer0的中断服务子程序中,不加这条语句PieCtrlRegs.PIEACK.all = PIEACK_GROUP1,竟还可以继续正常的按照定时的时间进入这个中断

在定时器timer0的中断服务子程序中,不加这条语句PieCtrlRegs.PIEACK.all = PIEACK_GROUP1,竟还可以继续正常的按照定时的时间进入这个中断,定时器timer0属于PIE中第一组的向量,按照道理,在timer0的中断服务子程序中如果不写PieCtrlRegs.PIEACK.all = PIEACK_GROUP1,那么之后这一组的中断,后面都是无法再响应的,但问题是,我去掉这句话,这个中断在以后的时间里还是能一直的运行下去,每次到了时间就能进入中断,并执行服务子程序,求解释。

  • 你圈出来的代码行用于确认中断,以便从group 1接收更多的中断。所以注释这一行不会禁用中断。
    下面是关于PIEACK寄存器如何工作的总结。如果某个位读取为0,则表示PIE可以从相应组向CPU发送中断。读取1表示是否已将来自相应组的中断发送到CPU,并且当前阻止了来自该组的所有其他中断。将1写入相应的中断位将清除该位,并使PIE模块在该组的中断挂起时驱动脉冲进入CPU中断输入。
    具体你可以参考系统控制和中断参考指南(sprufb0d)或数据表中的第6.5章:www.ti.com/.../tms320f28234.pdf