我用STM32自带的的ad测量一个直流24V电压,如果系统上电后在接入24V时,测量的数据比较稳定,如果上电前就接入24V,测量的数据变化的很大,我采用分压电阻,后面加了一个跟随器,有高手知道怎么处理吗? 以下是我AD处理函数: /*********************************************************************/ void ADC_Configuration(void) { ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE); /* Configure PA.00 (ADC Channel0) as analog input */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOA, &GPIO_InitStructure); ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; // ADC1和ADC2工作在独立模式 ; ADC_InitStructure.ADC_ScanConvMode = ENABLE; // 模数转换工作在扫描模式(多通道)模式 ; ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; // 模数转换工作在连续模式 ; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; // 转换由软件而不是外部触发启动 ; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; // ADC数据右对齐 ; ADC_InitStructure.ADC_NbrOfChannel = 1; // 顺序进行规则转换的ADC通道的数目 1 ; ADC_Init(ADC1, &ADC_InitStructure); // 设置指定ADC的规则组通道1,设置它们的转化顺序和采样时间为55.5周期 ; ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1,ADC_SampleTime_239Cycles5); ADC_DMACmd(ADC1, ENABLE); // 使能指定的ADC的DMA请求 ; ADC_Cmd(ADC1, ENABLE); // 使能指定的ADC ; ADC_ResetCalibration(ADC1); // 重置指定的ADC的校准寄存器 ; while(ADC_GetResetCalibrationStatus(ADC1)); // 获取ADC重置校准寄存器的状态 ; ADC_StartCalibration(ADC1); // 开始指定ADC的校准程序 ; while(ADC_GetCalibrationStatus(ADC1)); // 获取指定ADC的校准状态 ; ADC_SoftwareStartConvCmd(ADC1, ENABLE); // 使能指定的ADC的软件转换启动功能 ; } /********************************************************************/ /************************************************************* * 函数名: u16 ReadADC() *功能描述:读取ADC的值,并进行软件滤波 *参数输入:无 *输出参数:电压值,返回数据为电压扩大100倍,24.33->2433 *************************************************************/ u16 ReadADC() { u8 i,j,num=80; u16 value_buf[150]; float ad_value[150],temp=0 ,sum=0; for(i=0;i |