/*---
LUMMOD_UART_Tx_DMA_Channel DMA Config ---*/
DMA_Cmd(LUMMOD_UART_Tx_DMA_Channel,
DISABLE); // 关DMA通道
DMA_DeInit(LUMMOD_UART_Tx_DMA_Channel); // 恢复缺省值
DMA_InitStructure.DMA_PeripheralBaseAddr =
(uint32_t)(&LUMMOD_UART->DR);// 设置串口发送数据寄存器
DMA_InitStructure.DMA_MemoryBaseAddr =
(uint32_t)LumMod_Tx_Buf; // 设置发送缓冲区首地址
DMA_InitStructure.DMA_DIR =
DMA_DIR_PeripheralDST; //
设置外设位目标,内存缓冲区 -> 外设寄存器
DMA_InitStructure.DMA_BufferSize =
LUMMOD_TX_BSIZE; //
需要发送的字节数,这里其实可以设置为0,因为在实际要发送的时候,会重新设置次值
DMA_InitStructure.DMA_PeripheralInc =
DMA_PeripheralInc_Disable; // 外设地址不做增加调整,调整不调整是DMA自动实现的
DMA_InitStructure.DMA_MemoryInc =
DMA_MemoryInc_Enable; //
内存缓冲区地址增加调整
DMA_InitStructure.DMA_PeripheralDataSize =
DMA_PeripheralDataSize_Byte; // 外设数据宽度8位,1个字节
DMA_InitStructure.DMA_MemoryDataSize =
DMA_MemoryDataSize_Byte; // 内存数据宽度8位,1个字节
DMA_InitStructure.DMA_Mode =
DMA_Mode_Normal; //
单次传输模式
DMA_InitStructure.DMA_Priority =
DMA_Priority_VeryHigh; //
优先级设置
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //
关闭内存到内存的DMA模式
DMA_Init(LUMMOD_UART_Tx_DMA_Channel,
&DMA_InitStructure); // 写入配置
DMA_ClearFlag(LUMMOD_UART_Tx_DMA_FLAG); // 清除DMA所有标志
DMA_Cmd(LUMMOD_UART_Tx_DMA_Channel, DISABLE); // 关闭DMA
DMA_ITConfig(LUMMOD_UART_Tx_DMA_Channel,
DMA_IT_TC, ENABLE); // 开启发送DMA通道中断
/*--- LUMMOD_UART_Rx_DMA_Channel
DMA Config ---*/
|