为何这段代码不能进入到dma传输完成中断?
void Init_MDMA(unsigned short *pSrc, unsigned short *pDest)
{
*pMDMA_S1_START_ADDR = (void*)pSrc;
*pMDMA_S1_X_COUNT = 360;
*pMDMA_S1_X_MODIFY = 2;
*pMDMA_S1_Y_COUNT = 144;
*pMDMA_S1_Y_MODIFY = 2+720;
*pMDMA_D1_START_ADDR = (void *)pDest;
*pMDMA_D1_X_COUNT = 360;
*pMDMA_D1_X_MODIFY = 1;
*pMDMA_D1_Y_COUNT = 144;
*pMDMA_D1_Y_MODIFY = 1;
*pMDMA_S1_PERIPHERAL_MAP = 0x0040; //配置使用的DMA通道
*pMDMA_D1_PERIPHERAL_MAP = 0x0040;
*pMDMA_S1_CONFIG = 0x0030; //配置源DMA工作模式
*pMDMA_D1_CONFIG = 0x00b2; //配置目的DMA工作模式
}
EX_INTERRUPT_HANDLER(MDMA_ISR) //中断函数
{
*pMDMA_D1_IRQ_STATUS=0x1; //清楚中断标志位
set_capStatus(cap_done);
}
void Init_MDMA_Interrupt(void) //初始化中断
{
*pSIC_IAR2 = 0xf6ffffff; //设置中断等级
register_handler(ik_ivg13, MDMA_ISR); //注册中断
*pSIC_IMASK = 0x00400000; //打开中断屏蔽
}
而这段可以:
void Init_MDMA(unsigned short *pSrc, unsigned short *pDest)
{
*pMDMA_S0_START_ADDR = (void*)pSrc;
*pMDMA_S0_X_COUNT = 360;
*pMDMA_S0_X_MODIFY = 2;
*pMDMA_S0_Y_COUNT = 144;
*pMDMA_S0_Y_MODIFY = 2+720;
*pMDMA_D0_START_ADDR = (void *)pDest;
*pMDMA_D0_X_COUNT = 360;
*pMDMA_D0_X_MODIFY = 1;
*pMDMA_D0_Y_COUNT = 144;
*pMDMA_D0_Y_MODIFY = 1;
*pMDMA_S0_PERIPHERAL_MAP = 0x0040; //配置使用的DMA通道
*pMDMA_D0_PERIPHERAL_MAP = 0x0040;
*pMDMA_S0_CONFIG = 0x0030; //配置源DMA工作模式
*pMDMA_D0_CONFIG = 0x00b2; //配置目的DMA工作模式
}
EX_INTERRUPT_HANDLER(MDMA_ISR) //中断函数
{
*pMDMA_D0_IRQ_STATUS=0x1; //清楚中断标志位
set_capStatus(cap_done);
}
void Init_MDMA_Interrupt(void) //初始化中断
{
*pSIC_IAR2 = 0xff6fffff; //设置中断等级
register_handler(ik_ivg13, MDMA_ISR); //注册中断
*pSIC_IMASK = 0x00200000; //打开中断屏蔽
}