对中断的理解:中断的执行过程是这样的,当符合中断条件时,外设自发地产生(不需要用户设置)一个中断标志位(通常是置位),例如SCI中的RXDY,这是不需要用户设置的.外设响应这个中断,也称为使能中断。如SCI 中的RX/BKint,用户要将它设置为1 ,来使能中断。这样外设就产生了一个中断。这是外设级的中断。中断被送到PIE模块,PIE模块的IFR置1
,这是CPU自己来做的,不需要用户干预的。这时如果PIEIER=1(这需要用户设置的)那么中断送往CPU,并且将PIEACK置0(CPU自己做的).这时PIE级中断CPU 的IFR置1,如果CPU的IER=1 (用户设置)那么CPU 处理中断.这是CPU级中断.CPU响应中断,清CPU的IER,IFR,清除PIEIFR,执行中断服务程序,在中断服务程序的末尾用户要清除外设中断标志和PIEACK(写1来清除),重新使能中断,中断返回,回到主程序。
总结起来需要用户编程实现的有:1.三个级别的使能位。设为1使能中断。外设级别的在相应的外设寄存器里设置,PIE级的通过类似于“PieCtrlRegs.PIEIER9.bit.INTx4=1”的语句设置,CPU级的通过类似“IER = 0x100;”来设置 2。在相应的中断服务程序中清中断标志,清响应标志
SciaRegs.SCIFFTX.bit.TXINTCLR=1; // Clear SCI Interrupt , flagPieCtrlRegs.PIEACK.all|=0x100; //
其中还包括屏蔽使能全局中断,使能PIE控制器等.这里就省略了。