F28335采用的是三级中断,分别为外设级、PIE级、CPU级。最重要的是CPU级中断,CPU只能响应从CPU中断线上过来的中断请求。
外设想要成功产生一个中断,需要先经过外设级中断允许,接着PIE中断允许,然后CPU允许,最终才会产生
如上图所示中断响应过程可以分为两个部分,下边为PIE小组响应外设中断的过程,上半部分为CPU响应12组PIE中断的过程。
1 外设级中断
CPU正常处理程序,突然外设产生了一个中断事件,那么该外设对应的中断标志寄存器相应的位将被自动置位,如果相应的使能位正好打开,则该中断信号将会向PIE发出中断请求,如果没有使能,则该中断不会执行,想让改中断信号消失,中断标志寄存器复位即可。
2 PIE级中断
F28335内部集成了多种外设,每一个外设都会产生一个或多个外设级中断,但是CPU没有能力处理所有外设级的中断请求。于是CPU让出12个中断线给PIE模块复用管理。
一旦PIE有中断产生,相应的中断标志位PIEIFRx.将会置1,如果相应的PIE中断使能位也置1,则PIE将会检查对应的PIEACKx位以确定CPU是否准备好响应该中断,每次需要向改位写1进行清零,否则后续中断不会响应。
PIE通过PIEACKx的位来控制每一组中只有一个中断可以被响应,一但响应后就需要清零。
3 CPU级中断
CPU级也有中断标志寄存器IFR和中断使能寄存器IER,当某一个外设中断请求通过PIE发送到CPU时,CPU中断标志寄存器IFR中对应的中断标志位INTx就会被置位。
例如,当CPU定时器0的周期中断T0INT发送到CPU时,IFR的第0位INT1就会被置位,然后该状态就会被锁存在寄存器IFR中。这个时候CPU不会马上去执行中断,而是检查IER寄存器中相关位的使能情况和CPU寄存器ST1中的全局中断屏蔽位INTM的使能情况。如果IER中的相关位被置位,并且INTM的值为0,则中断就会被CPU响应。
在CPU定时器0的例子中,当IER的第0位INT1被置位,并且INTM的值为0,CPU就会响应定时器0的周期中断,T0INT。
CPU的中断优先级由高到低依次是INT1~INT12,每组 PIE控制的8个中断优先级由高到低INTx.1~INTx.8。
标签:中断,PIE,响应,F28335,寄存器,CPU,外设 From: https://blog.csdn.net/m0_73884681/article/details/140183784