各位6678的专家们好:
最近在调试EDMA相关的程序时,在查询它的IPR寄存器的时候遇到下面一个问题,还请专家们指教。我在代码中定义了下面的寄存器
#define CHIP_LEVEL_REG 0x02620000
#define KICK0 *(unsigned int*)(CHIP_LEVEL_REG + 0x0038)
#define KICK1 *(unsigned int*)(CHIP_LEVEL_REG + 0x003C)
#define KICK0_UNLOCK (0x83E70B13)
#define KICK1_UNLOCK (0x95A4F1E0)
#define KICK_LOCK 0
#define E0IPR *(unsigned int*)(0x02701068) //用于查询传输是否完成 CC0 Global的IPR
#define E0ICR *(unsigned int*)(0x02701070) //用于清除相应位 CC0 Global的ICR
加入某个EDMA的传输完成码TCC设为2,我在程序轮询该EDMA是否完成时使用的是下面的语句
while((E0IPR>>1)&0x1 != 1)
{
(" nop ");
}
但是在单步调试的时候却发现,这段代码并没有起作用,就是说即便此时IPR的值不为2,单步调试时也没有进入nop等待。想请教各位专家,该如何直接对IPR寄存器进行操作从而查询EDMA传输是否完成呢?
谢谢!!!