问题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次平均之后的结果,是不是将这个数值增加的话,会更加的精准一些?
|