求助各位大神,这是程序出了错误吗

2019-07-14 20:13发布

我想要用PC0,PC1,PC2采样三路电压,但是程序运行时,发现采集的数据是错误的,是哪里出错了吗是哪里设置错了吗?我只采样PC0时没有错误,现在想采样三相,我就在采集一相的基础上改成了三相,用get_adc(channel_10,1)采集A路,get_adc(channel_11,2)采集B路,get_adc(channel_12,3)采集C路,不知道哪里出错误了,c路通道我没有输入电压,居然也测出来了,不知道哪里出错了

void  Adc_Init(void)
{        
        ADC_InitTypeDef ADC_InitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_ADC1,ENABLE );         

        RCC_ADCCLKConfig(RCC_PCLK2_Div6);
          
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2;      
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;               
        GPIO_Init(GPIOC, &GPIO_InitStructure);       

        ADC_DeInit(ADC1);

        ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;       
        ADC_InitStructure.ADC_ScanConvMode = ENABLE;       
        ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;       
        ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T2_CC2;       
        ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;       
        ADC_InitStructure.ADC_NbrOfChannel = 3;       
        ADC_Init(ADC1, &ADC_InitStructure);       
        ADC_Cmd(ADC1, ENABLE);       
       
        ADC_ResetCalibration(ADC1);       

        while(ADC_GetResetCalibrationStatus(ADC1));       
       
        ADC_StartCalibration(ADC1);

        while(ADC_GetCalibrationStatus(ADC1));       
}                                  



u16 Get_Adc(u8 ch,u8 rank)
{
        ADC_RegularChannelConfig(ADC1, ch, rank, ADC_SampleTime_71Cycles5);        
  ADC_ExternalTrigConvCmd(ADC1, ENABLE);                       

        while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));

        return ADC_GetConversionValue(ADC1);       
}


0条回答

一周热门 更多>