问题1:精度可以达到多少?
问题2:代码部分:
u16 get_adc(u8 ch)
{
ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));
return ADC_GetConversionValue(ADC1);
}
u16 get_adc_average(u8 ch,u8 times)
{
u32 temp_val=0;
u8 t;
for(t=0;t<times;t++)
{
temp_val+=get_adc(ch);
Delay_Ms(5);
}
return temp_val/times;
}
float get_temperature(void)
{
u32 adcx;
float temperate;
adcx=get_adc_average(ADC_Channel_16,20);
temperate=(float)adcx*(3.3/4096);
temperate=(1.43-temperate)/0.0043+25;
return temperate;
}
进行20次平均之后的结果,是不是将这个数值增加的话,会更加的精准一些?
|