STM32串口DMA传输不能使用的问题

1. 开发环境

开发平台:官方开发板STM32F030R8-Nucleo
开发软件:Keil uVision5.24
开发库:STM32Cube_FW_F0_V1.9.0

2. 实验现象

根据官方例程,将UART1的DMA传输配置更改为UART2,但是使用UART2时,DMA的中断都进入不了,一开始以为是时钟未开启导致的,后来仔细对比后并无异常。于是查看了STM32F030的参考手册,DMA这一章,发现DMA的通道固定映射到相应的外设上,而不能随意配置。

STM32串口DMA传输不能使用的问题

我这里使用的是UART2,从上面的 mapping 图中可以看出UART2_TX只能使用 Channel4,UART2_RX只能使用 Channel5。所以我们在使用DMA通道时,一定要先查阅相应单片机DMA通道分配图,然后再选择配置相应的通道。

现在ST主推HAL库,使用该库时能够使用CubeMX生成引脚配置的代码,使用CubeMX配置引脚时,能够有效的避免不熟悉芯片导致配置出错的问题。