DMA 模式下 UART 接收数据失败

Kne*_*aps 3 stm32 stm32f4 nucleo cubemx stm32cubeide

我正在尝试从 NUCLEO F446RE stm32 板上的电脑接收 8 个字节。传输至电脑即可。问题是,我无法使用 DMA 接收数据。我看到了一个具有几乎相同代码的示例,并且它对这个人有用。如果我使用中断模式(只需将 HAL_UART_Receive_DMA 更改为 HAL_UART_Receive_IT,它确实可以工作并且正在调用 RX Complete 回调。

这是完整的 main.c。DMA 处于循环模式。

main.c
Run Code Online (Sandbox Code Playgroud)

https://pastebin.com/1W4BCjxB

Kne*_*aps 15

我解决了,这实际上是荒谬的。

这是 CubeMX 生成的代码的一部分:

MX_GPIO_Init();
MX_USART2_UART_Init();
MX_DMA_Init();
Run Code Online (Sandbox Code Playgroud)

如果我按如下方式订购:

MX_GPIO_Init();
MX_DMA_Init();
MX_USART2_UART_Init();
Run Code Online (Sandbox Code Playgroud)

有用!!!