DMA-串口传输下面是DMA初始化:
DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)&USART1->DR ; //串口数据寄存器
DMA_InitStructure.DMA_MemoryBaseAddr = (u32)SendBuff ;
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST; //数据传输方向内存到外设
DMA_InitStructure.DMA_BufferSize = 120; //DMA 通道的 DMA 缓存的大小
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //外设地址不变
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //内存地址寄存器递增
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte; //数据宽度为 8 位
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; //数据宽度为 8 位
DMA_InitStructure.DMA_Mode = DMA_Mode_Normal; //工作在正常缓存模式
DMA_InitStructure.DMA_Priority = DMA_Priority_Medium; //DM 通道拥有中优先级
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //非内存到内存传输
DMA_Init(DMA1_Channel4 , &DMA_InitStructure); //初始化 DMA 的通道
当串口发送DMA请求:
USART_DMACmd(USART1,USART_DMAReq_Tx,ENABLE);
DMA是传输完120个8位数据后停止传输,在这个过程是怎么保证每个数据都被串口发送出去了?
大神帮忙看看!迷惑很久了!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
来看看来看看
一周热门 更多>