paradoxfx

【原创】TI C2833x介绍---复位与中断(10)

0
阅读(2555)

准则3:使用PIEIER禁止中断

根据是否去掉中断的使能位,又分为两种处理方法:

方法1:使用PIEIER禁止中断,但是保留对应的中断标志位

这种方法的特点是中断不会丢失,需要以下的步骤:

1. 禁止全局中断(INTM = 1).

2. 清除PIEIERx.y位以禁止特定的外设中断;可以同时对一个组内的多个中断进行操作,即对整个PIEIERx寄存器进行“或”操作的赋值。用或操作是为了不会误操作到与本次程序执行的目的无关的位。

3. 循环等待5个时钟周期以确保所有送入CPU的中断的标志位可以在CPU IFR中正确操作。

4. 清除前面组所对应的CPU的IFRx位。

5. 清除外设中断组的PIEACKx 应答位。Step e. Clear the PIEACKx bit for the peripheral group.

6. 使能全局中断(INTM = 0).

方法2:使用PIEIER禁止中断,并清除对应的中断标志位

这种方法也叫对中断的“软”复位,其步骤是:

1. 禁止全局中断(INTM = 1).

2. 置位EALLOW位

3. 暂时修改PIE向量表指向一个空的中断服务子程序,这个程序只执行一个返回操作(这个方法上次提到了)。此方法的有点在于可以安全修改单独的PIEIFRx.y位,而不影响组内的其它中断。

4. 清除外设寄存器中的中断使能位。

5. 使能全局中断(INTM = 0)。

6. 等待所暂时设置的空ISR响应中断事件。

7. 禁止全局中断(INTM = 1).

8. 将PIE中断向量表恢复默认状态。

9. 清除EALLOW位。

10. 禁止外设中断对应的PIEIER位。

11. 清除外设中断对应的IFR位。

Ps:这里也可以看出,与外设有关的IER,IFR这些位前面都带有外设或者PIE这样的前缀,而与CPU直接相关的寄存器命名则直接、简单。

12. 清除PIE组的中断应答位PIEACK。

13. 使能全局中断。

Baidu
map