RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); DMA1_line1_InitStruct.DMA_PeripheralBaseAddr=(u32)ADC1_ADDR; //有坑 尽量不要用ADC->DR数据有问题 外饰地址 DMA1_line1_InitStruct.DMA_MemoryBaseAddr=(u32)adc_value1; //变量地址 DMA1_line1_InitStruct.DMA_DIR=DMA_DIR_PeripheralSRC;//...
//5、开关控制,ADC_Cmd()函数开启ADC。//6、根据手册建议,开启后还可对其进行下校准,可减小误差。voidAD_Init(void){RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);RCC_ADCCLKConfig(RCC_PCLK2_Div6);//6分频GPIO_InitTypeDefGPIO_InitStructure...
DMA_InitTypeDef DMA_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); DMA_DeInit(DMA1_Channel1); DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)(&ADC1->DR); DMA_InitStructure.DMA_MemoryBaseAddr = addr; DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; DMA_InitStructur...
3.ADC_Cmd函数的功能是使能或失能指定的ADC,其中ADC_Cmd只能在其他ADC设置函数之后被调用 ADC_Cmd(ADC1,ENABLE); 4.ADC_DMACmd函数的功能是使能或者失能指定的ADC的DMA请求。 ADC_DMACmd(ADC1,ENABLE); 5.ADC_ITConfig函数的功能是使能或者失能指定的ADC的中断,其中可以是EOC/AWD/JEOC ADC_ITConfig(ADC2,ADC...
ADC_SoftwareStartConvCmd(ADC1, ENABLE);//连续转换开始,ADC通过DMA方式不断的更新RAM区 } 增没有DMA的代码比起来,ADC的配置多了一句:ADC_DMACmd(ADC1, ENABLE);这句话打开ADC的DMA的支持。在配置完ADC后,要开启ADC的复位校准、AD校准,还要记得打开软件起始信号:ADC_SoftwareStartConvCmd(ADC1, ENABLE)。
***函数名称 : ADC_DMA_Configuration功 能 : ADC DMA配置参 数 : 无返 回值 : 无作 者 : strongerHuang***/void ADC_DMA_Configuration(void){ DMA_InitTypeDef DMA_InitStructure; /* 使能时钟 */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE); /* 配置DMA */ DMA_InitStructure.DMA_Chann...
DMA_Cmd(DMA2_Stream0,ENABLE); 在ADC寄存器中开启DMA传输,使用两个函数一个是设置CR2的DDS位,使得每次ADC数据更新时开启DMA传输; 另一个是设置ADC CR2的DMA位,使能ADC的DMA传输。 分别使用以下两个函数: ADC_DMARequestAfterLastTransferCmd(ADC1,ENABLE); //源数据变化时开启DMA传输 ...
STM32 ADC基本介绍+DMA外设到内存 1.ADC介绍 STM32f103系列有3个ADC,精度为12位,每个ADC最多有16个外部通道。其中ADC1和ADC2都有16个外部通道,ADC3一般有8个外部通道,各通道的A/D转换可以单次、连续、扫描或间断执行,ADC转换的结果可以左对齐或右对齐储存在16位数据寄存器中。ADC的输入时钟不得超过14MHz,其...
DMA_Cmd(DMA1_Channel1,ENABLE); } voidADC1_2_IRQHandler(void) { FLAG++;//在主函数中检查FLAG并惊醒处理 //计算转换数据的个数 if(FLAG》DATANUM-1) { FLAG=0; } ADC_ClearITPendingBit(USING_ADC,ADC_IT_EOC); } //获取转换结果的平均值,做滤波处理 ...
接下来还有两件事要做,第一件是允许DMA传输 /* Enable ADC1 DMA */ ADC_DMACmd(ADC1, ENABLE); 第二件是打开ADC1开始转换。 /* Enable ADC1 */ ADC_Cmd(ADC1, ENABLE); 这两件事情都不麻烦,所以就不再分析了。 至此一次ADC转换配置完毕。很麻烦...也许功能强大的副产品就是麻烦吧,没有办法。