juliestephen 发表于 2023-4-22 23:38

一阶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]
查看完整版本: 一阶RC低通滤波器