DMA的地址是按字节算的,你的数据长度为16比特,每次dma传输2个字节,所以DMA的 MODIFY 值为2.
进中断后关闭DMA,然后重新设定DMA起始地址和传输次数,然后再次启动DMA即可。
另外,用DMA传输不一定用中断,你的传输因为每次长度不同,用中断的话反而不好操作,可以尝试直接使能传输,如:
*pDMA1_START_ADDR = &buffer;
buffer[0] = 0x000000|(temp<<4);
Enable_DMA1_Sport0_TX(1);
*pDMA1_START_ADDR = &buffer;
buffer[0] = 0x010000|(temp<<4);
Enable_DMA1_Sport0_TX(1);
*pDMA1_START_ADDR = &buffer;
buffer[0] = 0x020000|(temp<<4);
Enable_DMA1_Sport0_TX(1);
*pDMA1_START_ADDR = &buffer;
buffer[0] = 0x030000|(temp<<4);
Enable_DMA1_Sport0_TX(1);
如担心传输数据太多,可以在每次传输前加一个DMA完成传输的状态判断。