u16 Get_adcvalue(void) { u16 Buff[10] = {0}; u16 temp = 0; u8 i,j; ADC_RegularChannelConfig(ADC1,2,1,ADC_SampleTime_239Cycles5); for(i = 0; i < 10; i++) { ADC_SoftwareStartConvCmd(ADC1,ENABLE); while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC) != SET) { } Buff[i] = ADC_GetConversionValue(ADC1); } for(i = 0; i < 9; i++) { for(j = i + 1; j < 10; j++) { if(Buff[i] > Buff[j]) { temp = Buff[i]; Buff[i] = Buff[j]; Buff[j] = temp; } } } temp = 0; for(i = 1; i < 9; i++) { temp += Buff[i]; } return (temp / 8); }
时间: 2024-02-04 17:02:58 浏览: 219
基于STM32F407单片机+ADC-CH16内部温度测试实验例程工程源码.zip
这是一段C语言代码,实现了获取ADC采集的电压值的功能。代码中定义了一个函数Get_adcvalue,返回值为unsigned short类型,表示ADC采集的电压值。函数中定义了一个长度为10的数组Buff,用于存放ADC采集到的10个电压值。代码首先通过ADC_RegularChannelConfig函数配置ADC采集通道和采样时间。然后循环10次,每次使用ADC_SoftwareStartConvCmd函数启动ADC转换,并使用ADC_GetConversionValue函数获取转换后的电压值,存放到数组Buff中。接着使用冒泡排序法对数组Buff进行排序,去掉最大值和最小值,再计算剩余8个数的平均值,作为最终的ADC采集电压值,返回给调用函数。
阅读全文