代码情况:一个10us定时器中断,定时器中断中运行时间大约为7us时间。
一个GPIO中断,做正弦波相位校准。当该中断触发,需立马执行该服务程序。
想设计效果:定时器中断服务子程序,可以被GPIO中断服务程序嵌套。我已经将GPIO中断优先级高于定时器中断。
参考了很多资料,感觉有疑惑:
1.在TMS320C64x+ DSP Megamodule Reference Guide中有一句“”“Since any interrupt service rou
tine can be atomic (not nestable), the CPU interrupt priority only applies to pending interrupts”,说可屏蔽中断,不可以被嵌套。
2.在“”TMS320C64x/C64x+ DSPCPU and Instruction Set”中,又有一篇专门讲Nested Interrupts,我按资料写了中断嵌套代码,保护IRP,CSR,........在恢复CSR,..;
old_irp = IRP;
old_csr = CSR ;
CSR = old_csr | 1 ;
/* Interrupt service code goes here.
/* Interrupts may occur while this code executes //测试发现: 当GPIO中断触发后,并没有立马跳到GPIO中断服务子程序
CSR = CSR & -2 ;
CSR = old_csr ;
IRP = old_irp ;
问题:我把GPIO中断优先级设最高。当DSP的PC跳到定时器服务程序中,我触发GPIO中断,但是程序为马上跳到GPIO中断,而是运行完定时器中断后,才执行GPIO中断。 如果我要程序在执行定时器中断服务程序时,若GPIO中断触发能立马嵌套,跳到GPIO中断服务程序去.该怎么办?