ADC不用DMA两通道逐次转换出错

2019-08-14 02:40发布


马上就晚上12点了,找了很久网上查资料也找了很久。没有找到问题所在,不知道哪里配置错了?

两个通道单独测试可以,我想用程序每启动一下换一个通道,但没有结果输出。

希望有谁能指点一下,非常感谢!!!



/************************************/
               通过串口打印输出
/************************************/
while(1)
   {
     ad=0;
       
                 ADC_SoftwareStartConvCmd(ADC1,ENABLE);     //启动
                while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));  //等待完成
                 ad=ADC_GetConversionValue(ADC1);
          
         printf("ad =%f ",3.3/4095*ad);//电压值
          delay_ms(1000);
   }



/************************************/
                    IO配置
/************************************/
void GPIO_Configuration(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;       

        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
        GPIO_Init(GPIOC,&GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
        GPIO_Init(GPIOC,&GPIO_InitStructure);
       
       
}

/************************************/
                    ADC配置
/************************************/

void ADC_Configuration(void)
{
        ADC_InitTypeDef ADC_InitStructure;

        ADC_InitStructure.ADC_Mode=ADC_Mode_RegSimult;   //工作在同步规则模式
        ADC_InitStructure.ADC_ScanConvMode=ENABLE;        //工作在扫描模式
        ADC_InitStructure.ADC_ContinuousConvMode=DISABLE;  //
        ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;
        ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;
        ADC_InitStructure.ADC_NbrOfChannel=2;

        ADC_Init(ADC1,&ADC_InitStructure);

        ADC_RegularChannelConfig(ADC1,ADC_Channel_10,1,ADC_SampleTime_239Cycles5);
        ADC_RegularChannelConfig(ADC1,ADC_Channel_11,2,ADC_SampleTime_239Cycles5);

        ADC_DiscModeChannelCountConfig(ADC1,1);
        ADC_DiscModeCmd(ADC1,ENABLE);
       
        ADC_Cmd(ADC1,ENABLE);


        ADC_ResetCalibration(ADC1);
        while(ADC_GetResetCalibrationStatus(ADC1));

        ADC_StartCalibration(ADC1);
        while(ADC_GetCalibrationStatus(ADC1));

        ADC_SoftwareStartConvCmd(ADC1,ENABLE);

}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。