蓝桥杯嵌入式ADC采集软件滤波
根据往年题目的要求,有些题目需要对ADC电压采集值进行滤波,使其跳动的不是那么快。最简单的就是采用均值滤波。
代码示例如下:
uint8_t ADC_collect_times=10; //adc采集次数控制
uint32_t Adc_num_all;//采集后总值
uint32_t Adc_Volt;//转换为电压值
int i=0;
void ADC_filter(void)
{
for(i=0;i<ADC_collect_times-1;i++)
{
Adc_num_all+=get_adc();
HAL_Delay(10);//可以不加试试,有时候可以。加了可能影响其他模块
}
Adc_num_all=Adc_num_all/10;//求均值
Adc_Volt=(float)((Adc_num_all*3.3))/4096;
Adc_num_all=0;//采集完后清零
}
ok辽,thank you everybody!!!