三个EDMA事件都是绑定的一个中断,通过事件号进行区别,一般运行几分钟就进不了中断了,代码如下:
unsigned int temp; IntEventClear(SYS_INT_EDMA3_0_CC0_INT1); // 判断接收 DMA 完成 if(EDMA3GetIntrStatus(SOC_EDMA30CC_0_REGS) & (1 << EDMA3_CHA_MCASP0_RX)) [ // 清除 0 通道中断标志 EDMA3ClrIntr(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX); McASPRxDMAComplHandler(); ] // 判断发送 DMA 完成 if(EDMA3GetIntrStatus(SOC_EDMA30CC_0_REGS) & (1 << EDMA3_CHA_MCASP0_TX)) [ // 清除 1 通道中断标志 EDMA3ClrIntr(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_TX); McASPTxDMAComplHandler(); ] // 判断发送 DMA 完成 清除MCBSP发送标志 if(EDMA3GetIntrStatus(SOC_EDMA30CC_0_REGS) & (1 << EDMA3_CHA_MCBSP0_TX)) [ temp = CC0_SR1_IPR; CC0_SR1_ICR = temp; cnt1++; RxCnt++; RxCnt = RxCnt % 2; ]
三个EDMA事件都是绑定的一个中断,通过事件号进行区别,一般运行几分钟就进不了中断了,代码如下:
unsigned int temp; IntEventClear(SYS_INT_EDMA3_0_CC0_INT1); // 判断接收 DMA 完成 if(EDMA3GetIntrStatus(SOC_EDMA30CC_0_REGS) & (1 << EDMA3_CHA_MCASP0_RX)) [ // 清除 0 通道中断标志 EDMA3ClrIntr(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX); McASPRxDMAComplHandler(); ] // 判断发送 DMA 完成 if(EDMA3GetIntrStatus(SOC_EDMA30CC_0_REGS) & (1 << EDMA3_CHA_MCASP0_TX)) [ // 清除 1 通道中断标志 EDMA3ClrIntr(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_TX); McASPTxDMAComplHandler(); ] // 判断发送 DMA 完成 清除MCBSP发送标志 if(EDMA3GetIntrStatus(SOC_EDMA30CC_0_REGS) & (1 << EDMA3_CHA_MCBSP0_TX)) [ temp = CC0_SR1_IPR; CC0_SR1_ICR = temp; cnt1++; RxCnt++; RxCnt = RxCnt % 2; ]
举报