TI专家、各位朋友:
最近遇到一个问题,在EDMA3中断服务程序中判断是MCASP receive 还是MCASP transmit完成传输触发了中断,用仿真器单步调试时,发现IPR的值是正确的。
我先先清掉IPR的标志位,然后再去执行中断服务程序。但我往ICR相应的寄存器写1想清除IPR中的相应位时,我发现没起作用。
#define EDMA3_SR1CR_IPR *(volatile uint32_t *)(0x01C02268)
#define EDMA3_SR1CR_ICR *(volatile uint32_t *)(0x01C02270)
我使用的是EDMA3_0 Channel Controller 0 ,因此我配置的是Shadow Region 1 Channel Registers中的寄存器。
无论我使用EDMA3_SR1CR_ICR=0x0000 0001或者EDMA3_SR1CR_ICR=0x0000 0002(以及EDMA3_SR1CR_ICR|=0x0000 0001或者EDMA3_SR1CR_ICR|=0x0000 0002),都无法清除EDMA3_SR1CR_IPR中的标志位。
上图是对ICR寄存器的使用说明,在手册sprugp9b.pdf P115页。

