[tr] TMS320C6748光盘目录demoSYSBIOSApplica
tionEDMA3这个工程中,调试出现问题。
1,原例程调试正常,改成MAX_ACOUNT=100,MAX_BCOUNT=100也正常。
把MAX_ACOUNT改成32,MAX_BCOUNT改成512,函数EDMA3Test()运行完之后,查看数组_dstBuff发现有连续几十个元素值是0
// 最大 ACOUNT
#define MAX_ACOUNT (10u)
// 最大 BCOUNT
#define MAX_BCOUNT (10u)
// 最大 CCOUNT
#define MAX_CCOUNT (1u)
2, 原例程调试正常,改成MAX_ACOUNT=100,MAX_BCOUNT=100也正常。它的传输次数umenabled = bcnt * ccnt=100;
原例程的
unsigned int syncType = EDMA3_SYNC_A;
改成:unsigned int syncType = EDMA3_SYNC_AB; //希望它只传输一次。
运行之后,程序死在函数EDMA3Test()里:
// 等待中断服务函数执行完成
while(irqRaised == 0u){}
然后在中断服务函数Void EDMA3CCComplIsr(UArg arg)里插入断点,发现程序不进入这个中断。
3, 原例程调试正常,改成MAX_ACOUNT=100,MAX_BCOUNT=100也正常。它的传输次数umenabled = bcnt * ccnt=100;
原例程的
// 使能 Intermediate & Final 传输完成中断
paramSet.opt |= (1 << EDMA3CC_OPT_ITCINTEN_SHIFT);
paramSet.opt |= (1 << EDMA3CC_OPT_TCINTEN_SHIFT);
改成:
paramSet.opt &= ~(1 << EDMA3CC_OPT_ITCINTEN_SHIFT); //希望全部传输完成后只中断一次
paramSet.opt |= (1 << EDMA3CC_OPT_TCINTEN_SHIFT);
运行之后,程序死在函数EDMA3Test()里:
// 等待中断服务函数执行完成
while(irqRaised == 0u){}
然后在中断服务函数Void EDMA3CCComplIsr(UArg arg)里插入断点,发现程序不进入这个中断。
请试一下,我的这三种情况。看看是怎么回事
[/tr]