C 中不允许使用类型名称

type name is not allowed in C

我正在尝试使用 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;

或者:

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

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

uint32_t(&ADCValue)uint32_t(ADCValue) 在 C++ 中有效,但在 C 中无效。