第一步:配置时钟
我用是stm32f103zetx
第二步:打开串口进行配置
以UART1为例子
1.MODE选异步通信------Asynchronous
Ⅰ、MODE中 Synchronous 为同步通信
2.Parameter Settings未进行配置,默认即可
3.NVIC Settings,enable选√
4.DMA Settings,add上usart1-rx和usart1-tx(到时候正常选择就行)
5.DMA Request Settings
① mode选为normal(还有一个Circular)
Normal:当一次DMA数据传输完后,停止DMA传送 ,也就是只传输一次
Circular:传输完成后又重新开始继续传输,不断循环永不停止
② 选Memory----Byte
这个Increment Address的第一类外设地址寄存器
第二类内存地址寄存器
第三步:DMA配置
在第二步配置完串口后我们就可以不配置dma,因为cube已经给我们配置好了。
DMA有四种传输方向:
外设到内存 Peripheral To Memory
内存到外设 Memory To Peripheral
内存到内存 Memory To Memory
外设到外设 Peripheral To Peripheral
-----------------------------------------------到此就完美了------------------------------------------------------
第四步:实地检验
定义一个数组,随便写点什么存在数组中,然后whlie(1)中调用usart1-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 */
}