程序都是好的。可是STM32 DMA使用时报错

2019-07-14 23:52发布


下面程序中将DMA_InitStructure.DMA_PeripheralBaseAddr =ADC1_DR_Address; //定义 DMA通道外设基地址=ADC1_DR_Address
屏蔽了就没有ERROR了
但DMA_InitStructure.DMA_PeripheralBaseAddr =ADC1_DR_Address;
并没错啊
请大侠帮我看看


初始化程序如下:
DMA_DeInit(DMA1_Channel1);//复位DMA通道1
DMA_InitStructure.DMA_PeripheralBaseAddr =ADC1_DR_Address; //定义 DMA通道外设基地址=ADC1_DR_Address
DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&ADCConvertedValue; //定义DMA通道存储器地址
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;//指定外设为源地址
DMA_InitStructure.DMA_BufferSize = 1;//定义DMA缓冲区大小1
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//当前外设寄存器地址不变
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;//当前存储器地址不变
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;//定义外设数据宽度16位
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; //定义存储器数据宽度16位
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;//DMA通道操作模式位环形缓冲模式
DMA_InitStructure.DMA_Priority = DMA_Priority_High;//DMA通道优先级高
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;//禁止DMA通道存储器到存储器传输
DMA_Init(DMA1_Channel1, &DMA_InitStructure);//初始化DMA通道1
DMA_Cmd(DMA1_Channel1, ENABLE); //使能DMA通道1
编译后提示:
..UserDMA_Configratiion.c(14): error:  #20: identifier "ADC1_DR_Address" is undefined


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
小神241
1楼-- · 2019-07-15 12:50
那咋定义呢?
人中狼
2楼-- · 2019-07-15 13:54
 精彩回答 2  元偷偷看……
人中狼
3楼-- · 2019-07-15 14:39
小神241 发表于 2017-9-19 10:48
那咋定义呢?

类似这样的定义
#define ADC1_DR_Address    ((uint32_t)0x4001244C)        //ADC result
ADC1_DR_Address只是一个类似变量的定义,需要有对应的寄存器地址。
HARRY007
4楼-- · 2019-07-15 14:41
小神241 发表于 2017-9-19 10:48
那咋定义呢?

DMA_InitStructure_G1.DMA_PeripheralBaseAddr = (uint32_t)&TIM5->CCR1;
直接饮用就可以,省的定义出错~  &ADC1->DR

一周热门 更多>