一阶RC低通滤波器
low_filter.htypedef struct{
int16_tInput;
int16_tOutput;
int32_tFilterTf;
int32_tFilterTs;
int32_tKr;
int32_tKy;
} low_filter;
void low_filter_init(low_filter *v);
int16_t low_filter_calc(low_filter *v);low_filter.cvoid low_filter_init(low_filter *v){
v->Kr = v->FilterTs*1024/(v->FilterTs + v->FilterTf);
v->Ky = v->FilterTf*1024/(v->FilterTs + v->FilterTf);
}
int16_t low_filter_calc(low_filter *v){
int32_t tmp = 0;
tmp = ((int32_t)v->Kr*v->Input + v->Ky*v->Output)/1024;
if(tmp>32767){
tmp = 32767;
}
if( tmp < -32768){
tmp = -32768;
}
v->Output = (int16_t)tmp;
v->Output = v->Output;
return v->Output;
}
页:
[1]