powder-320203 发表于 2015-10-23 21:41:14

单独只使用一个channel,是正确的,可是用了3个channel,切换后就是不对。
ADCx->CHSELR = (uint32_t)ADC_Channel;        //

不向stm32f103\107
        ADC1->SQR3|=ch;                  //这个是正确的,很容易
请教大侠指点。                          

powder-320203 发表于 2015-10-23 21:52:48

at89 发表于 2015-10-19 12:49
这种情况那就排除看看喽,是不是原理图上面连接有错或者是标错了了,或者查一下端口复用之类的,最好重新建 ...

单独用一个channel adc是正确的,用3个,作channel切换就不对了?请指点:
/* Convert the selected Channel Vrefwith 55.5 Cycles as sampling time */
ADC_ChannelConfig(ADC1, ADC_Channel, ADC_SampleTime_239_5Cycles);
//ADC_ChannelConfig(ADC1, ADC_Channel_0, ADC_SampleTime_55_5Cycles);
//cda_value=2;
/* ADC Calibration */
ADC_GetCalibrationFactor(ADC1);
//   ADC_DMACmd(ADC1, DISABLE);
/* Enable ADC1 */
//ADC_Cmd(ADC1, ENABLE);   

/* Wait the ADCEN falg */
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_ADEN));
/* ADC1 regular Software Start Conv */
ADC_StartOfConversion(ADC1);
        if(cda_value==1) RegularConvData_Tab1 = ADC_GetConversionValue(ADC1);
        else if(cda_value==2) RegularConvData_Tab2 = ADC_GetConversionValue(ADC1);
        else if(cda_value==3) RegularConvData_Tab3 = ADC_GetConversionValue(ADC1);

powder-320203 发表于 2015-10-23 21:59:30

ADC_ChannelConfig(ADC1, ADC_Channel, ADC_SampleTime_239_5Cycles);
/* ADC Calibration */
ADC_GetCalibrationFactor(ADC1);

/* Wait the ADCEN falg */
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_ADEN));
/* ADC1 regular Software Start Conv */
ADC_StartOfConversion(ADC1);
        if(ADC_Channel==ADC_Channel_0) RegularConvData_Tab1 = ADC_GetConversionValue(ADC1);
        else if(ADC_Channel==ADC_Channel_1) RegularConvData_Tab2 = ADC_GetConversionValue(ADC1);
        else if(ADC_Channel==ADC_Channel_9) RegularConvData_Tab3 = ADC_GetConversionValue(ADC1);

powder-320203 发表于 2015-10-23 22:02:08

ADC_ChannelConfig(ADC1, ADC_Channel, ADC_SampleTime_239_5Cycles);
/* ADC Calibration */
ADC_GetCalibrationFactor(ADC1);

/* Wait the ADCEN falg */
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_ADEN));
/* ADC1 regular Software Start Conv */
ADC_StartOfConversion(ADC1);
        if(ADC_Channel==ADC_Channel_0) RegularConvData_Tab1 = ADC_GetConversionValue(ADC1);
        else if(ADC_Channel==ADC_Channel_1) RegularConvData_Tab2 = ADC_GetConversionValue(ADC1);
        else if(ADC_Channel==ADC_Channel_9) RegularConvData_Tab3 = ADC_GetConversionValue(ADC1);

peter001 发表于 2015-10-23 23:51:05

是不是程序跑飞了
页: 1 [2]
查看完整版本: 请教 ADC_Channel_0与实际的adc用管脚PA0不一致