uint8_t SendBuff[SENDBUFF_SIZE];
void USARTx_DMA_Config(void)
{
DMA_InitTypeDef DMA_InitTStruct;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
// 设置DMA源地址:串口1的数据寄存器地址*/
DMA_InitTStruct.DMA_PeripheralBaseAddr = USART_DR_ADDRESS;
// 传输大小
DMA_InitTStruct.DMA_BufferSize = SENDBUFF_SIZE;
// 方向:从内存到外设
DMA_InitTStruct.DMA_DIR = DMA_DIR_PeripheralDST;
// 禁止内存到内存的传输
DMA_InitTStruct.DMA_M2M = DMA_M2M_Disable;
// 内存地址(要传输的变量的指针)【?】为什么用(u32)
DMA_InitTStruct.DMA_MemoryBaseAddr = (u32)SendBuff;
// 内存数据单位
DMA_InitTStruct.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
// 外设数据单位
DMA_InitTStruct.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
// 内存地址自增
DMA_InitTStruct.DMA_MemoryInc = DMA_MemoryInc_Enable;
// 外设地址不增
DMA_InitTStruct.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
// DMA模式,一次或者循环模式
DMA_InitTStruct.DMA_Mode = DMA_Mode_Normal;
// 优先级:中(这里可随意)
DMA_InitTStruct.DMA_Priority = DMA_Priority_Medium;
//配置DMA通道
DMA_Init(USART_TX_DMA_CHANNLE, &DMA_InitTStruct);
//使能DMA
DMA_Cmd(USART_TX_DMA_CHANNLE,ENABLE);
} |