基于STM32H7 USART_DMA双缓冲配置
一. 前言
现在ST出的芯片性能越来越强大,对应的程序也是越来越复杂,为了让芯片功能的开发更加的容易,他们推出了Cube MX这款用于配置相关芯片HAL库程序基础工程的一个不错的软件,虽然存在bug不过一直在完善,近些年来这个软件也是越发的人性化了,当然毕竟没有标准库发展的时间长,网络上对于HAL库的讲解和资料也不是很全面,新手入门用HAL显然不是很明智,而对于习惯了标准库却又想用性能更强的芯片的朋友这个HAL库太乱,我也是研究了好久才弄明白这个HAL库使用和配置的方法,我将以笔记的形式来记录每一种有意思的配置操作。这篇是关于DMA双缓冲接收的配置方案(发送大家可以试着配置一下),大家可以获取我上传的配置文件来更容易理解讲的内容.配置文件的下载链接
二.软硬件版本信息
STM32Cube Mx 5.30
Keil 5.29.0.0
STM32H750XB
三.使用Cube MX配置工程
1.配置时钟
2.配置串口1
加入DMA
使能串口中断
3.生成工程
四.配置生成的工程
1.配置串口空闲中断
__HAL_UART_ENABLE_IT(&huart1,UART_IT_IDLE);//使能串口空闲中断
只需这个一句就可以了,把这条语句放到串口使能函数后执行就可以。
2.配置DMA双缓存
1).设置一个二维缓存数组
2).配置DMA为回环模式
hdma_usart1_rx.Init.Mode = DMA_CIRCULAR;
也可以在使用Cube MX配置DMA时直接配置成回环模式:
3).启动双缓存
HAL_DMAEx_MultiBufferStart(&hdma_usart1_rx,USART1->RDR,(uint32_t)&Rx