我正在尝试使用STM32F407将ADC与DMA一起使用。我想将ADCValue的内存地址设置为DMA流x内存0地址寄存器。但是我得到这个错误:

type name is not allowed


此部分在main

unsigned short ADCValue[1];
DMA2_Stream0->M0AR= uint32_t(&ADCValue);


和注册的定义

  __IO uint32_t M0AR;   /*!< DMA stream x memory 0 address register   */

最佳答案

您的投放方式错误。它应该是:

DMA2_Stream0->M0AR = (uint32_t)&ADCValue;


但是由于它是一个数组,所以&也不是必需的。使用这种方式时,数组将自动衰减为指针。因此,这样做:

DMA2_Stream0->M0AR = (uint32_t)ADCValue;

10-04 11:26