初级会员

- 积分
- 53
- 金钱
- 53
- 注册时间
- 2013-7-29
- 在线时间
- 7 小时
|

楼主 |
发表于 2013-7-31 16:08:21
|
显示全部楼层
回复【2楼】正点原子:
---------------------------------
只买了开发板 没买书诶
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1 | RCC_AHBPeriph_DMA2, ENABLE);//使能DMA时钟
DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address; // 外设地址
DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&ADCConvValue[]; //memory中变量的地址,需要自己定义
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //单向传输 DMA_DIR_PeripheralDST 双向传输
DMA_InitStructure.DMA_BufferSize = 1; //DMA传输时缓冲区的长度
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //某个通道与多个外设连接ENABLE 此处只与ADC1连接故 DISABLE
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable; //DMA访问多个内存参数时 只访问一个内存参数时,可设置成:DMA_MemoryInc_Disable
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;// DMA在访问时每次操作的数据长度 一个half16bit
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; // 与上面类似
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; //连续不断的循环模式 若只想访问一次后就不要访问 Normal
DMA_InitStructure.DMA_Priority = DMA_Priority_High; //优先级 VeryHigh Medium Low
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //是设置DMA的2个memory中的变量互相访问的
DMA_Init(DMA2_Channel5, &DMA_InitStructure);
/* Enable DMA2 channel5 */
DMA_Cmd(DMA2_Channel5, ENABLE);
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //ADC独立工作模式
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //ADC数据右对齐
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; //连续转换
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //由软件触发,故为None
ADC_InitStructure.ADC_NbrOfChannel = 1; // 使用的ADC通道数
ADC_InitStructure.ADC_ScanConvMode = DISABLE; //ADC工作在多通道模式还是单通道模式
ADC_Init(ADC1, &ADC_InitStructure);
ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_1Cycles5);
ADC_Cmd(ADC1, ENABLE);
//ADC1使能
ADC_DMACmd(ADC1, ENABLE);
ADC_ResetCalibration(ADC1); //重置ADC1的校准寄存器
while(ADC_GetResetCalibrationStatus(ADC1)); //d等待直到校准寄存器重设完成
ADC_StartCalibration(ADC1); //开始指定ADC的校准状态
while(ADC_GetResetCalibrationStatus(ADC1)); //获取指定ADC校准程序,直至完成
ADC_SoftwareStartConvCmd(ADC1, ENABLE);//软件使能ADC转换
DMA设置外设的地址写成ADC1_DC_Address 找不到诶 数据存储在那个存储300个数据的数组里后 慢了怎么办
原谅我很多白痴的问题 才学 |
|