第一步:配置时钟
我是用的stm32f103
第二步:配置串口
1.mode:异步通信------Asynchronous
同步通信------Synchronous
这里选择Asynchronous
2.Parameter Settings为默认配置就行
3.NVIC Settings 选择enable
4.DMA Settings 点add添加上usart1-rx和usart1-tx
①mode选择normal
一共两种选择,normal和Circular
Normal:当一次DMA数据传输完后,停止DMA传送 ,也就是只传输一次
Circular: 传输完成后又重新开始继续传输,不断循环永不停止
②DMA指针递增设置
Increment Address 第一类为外设地址寄存器
第二类为内存地址寄存器
Data Width选择Byte
5、
DMA有四种传输方向:
- 外设到内存 Peripheral To Memory
- 内存到外设 Memory To Peripheral
- 内存到内存 Memory To Memory
- 外设到外设 Peripheral To Peripheral
第三步:配置DMA
如果串口配置好的话,dma就已经帮助你配置好了cubemx,
**********************************到此就已经完美了*******************************************************
第四步:代码验证
打开MDK,随便定义一个数组,存进一句话,然后再whlie(1)中调用串口dma的函数进行验证
while (1)
{
/* USER CODE END WHILE */
HAL_UART_Transmit_DMA(&huart1,buf,sizeof(buf));
HAL_Delay(1000);
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}