STM32的ADC1和ADC2的采集问题

2019-03-23 18:41发布

试了一下STM32的ADC1和ADC2,调试时出现的问题让我不解:
(1)只使用STM32的ADC1采集信号,PA.0为其模拟输入通道;

将ADC1配置成独立模式、单通道单次转换、软件触发,

采集到的数据是正确的;

(2)只使用ADC2采集信号,与(1)中ADC1的设置完全相同,即

PA.0为其模拟输入通道;

将ADC2配置成横独立模式、单通道单次转换、软件触发,

却采集不到数据;

所以,想请教一个问题:

STM32的ADC2采集相较ADC1采集时,对ADC2的配置有什么特殊要求吗?

或者其ADC2只能在双AD模式中才能使用?




此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
17条回答
qiwan
2019-03-24 18:42
yl20084784 发表于 2015-3-15 14:24
void ADC2_Init(void)

{



GPIO_InitTypeDef  GPIO_InitStructure;

               // Device header

ADC_InitTypeDef  ADC_InitStructure;





                //RCC_APB2PeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);

                RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC2,ENABLE);

                GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;        //PA0

                GPIO_InitStructure .GPIO_Mode=GPIO_Mode_AIN;//éèÖÃÎaÄ£Äaêäèë

                GPIO_Init(GPIOA,&GPIO_InitStructure);//PA02Îêy×°èëíê±Ï        

                RCC_ADCCLKConfig(RCC_PCLK2_Div6);//adcê±ÖóéèÖÃíê±Ï,ADC×î¸ß1¤×÷ÆμÂê14M£¬6·ÖÆμ¾íêÇ12M

        

                ADC_DeInit(ADC2);  //½«íaéè ADC2 μÄè«2¿¼Ä′æÆ÷ÖØéèÎaè±ê¡



                ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;

                ADC_InitStructure.ADC_ScanConvMode=DISABLE;//쥶à×a»»Ä£ê½

                ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;//PA0á¬Dø×a»»

                ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//óò¶ÔÆë

                ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//èí¼t′¥·¢

                ADC_InitStructure.ADC_NbrOfChannel=1;        //í¬ê±×a»»í¨μàêyÎa1£¬èç1ûóD¶à¸öí¨μà½øDD×a»»£¬Ôù¶¨

                ADC_Init(ADC2,&ADC_InitStructure);//×°ÔØADC2Îêy

                                ADC_RegularChannelConfig(ADC2,ADC_Channel_0,1,ADC_SampleTime_41Cycles5);

                //adc2éóÃê±¼ät=2éÑùÖüÆú+12.5¸öÖüÆú



          ADC_Cmd(ADC2,ENABLE);

                ADC_ResetCalibration(ADC2);

                while(ADC_GetCalibrationStatus(ADC2));

                ADC_StartCalibration(ADC2);//D£×¼

                while(ADC_GetCalibrationStatus(ADC2));

                ADC_SoftwareStartConvCmd(ADC2,ENABLE);//Öƶ¨èí¼t′¥·¢×a»»

               

        

        

}

参考下这个

很谢谢您的热心帮忙,其实我的程序就是您这样的。
奇了怪了


一周热门 更多>