STM32F446 HAL_UART_接收直接写入GPIOA的DMA->;ODR不';行不通

STM32F446 HAL_UART_接收直接写入GPIOA的DMA->;ODR不';行不通,stm32,stm32f4,nucleo,Stm32,Stm32f4,Nucleo,我正在试验STM32核子板STM32F446 uint8_t data[x]; HAL_UART_Receive_DMA(&huart2, &data, x); 当我将字节发送到PA3并通过DMA将其写入我发送的x字节时,这段代码起作用 但是,当PA5 LED的&data替换为0x40020014(GPIOA->ODR)或位带别名地址0x42400294时,当我向PA3发送一个字节时,不会设置用于切换LED的位,并且根据x的不同,可以调用或不调用HAL UART\u R

我正在试验STM32核子板STM32F446

  uint8_t data[x];
  HAL_UART_Receive_DMA(&huart2, &data, x);
当我将字节发送到PA3并通过DMA将其写入我发送的
x
字节时,这段代码起作用

但是,当PA5 LED的
&data
替换为
0x40020014
GPIOA->ODR
)或位带别名地址
0x42400294
时,当我向PA3发送一个字节时,不会设置用于切换LED的位,并且根据
x
的不同,可以调用或不调用
HAL UART\u RxCpltCallback
。为什么?


链接到代码:

您要查找的是从UART寄存器到GPIO寄存器的DMA传输,即外围设备到外围设备的DMA传输。根据第9.2章,这是不受支持的,更不用说STM32Cube HAL了。作为参考,我正在阅读《掌握STM32》一书。它声称只有DMA2(与USART1关联)可以进行外设到外设的传输。但是只有USART2与ST-LINK接口相关联,因此我无法通过我的简单设置对其进行测试。更正:USART2与带有ST-LINK的核仁64板的ST-LINK相关联。