#在这里快速回复##include "public.h" #include "printf.h" #include "adc.h" #include "systick.h" int main() { u16 ad; u8 i; float adc; //电压 float Distance; //距离 adc_init(); //ADC初始化 printf_init(); //printf初始化 while(1) { //ad = ad>>2;//12位AD转换成10位 for(i=0;i<50;i++)//读取50次的AD数值取其平均数较为准确 { ADC_SoftwareStartConvCmd(ADC1, ENABLE); while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));//转换结束标志位 ad=ad+ADC_GetConversionValue(ADC1);//返回最近一次ADCx规则组的转换结果 } ad=ad/50; //取平均值 adc =(float)ad*(3.3/4096); Distance = (1/(ad*(0.0000954)+0.000502))-4; printf(" 电压值= %f V \n",adc); printf(" 测量距离= %f cm \n",Distance ); delay_ms(10000); } } |