使用STM32实现实时数字滤波器(FIR)
首先是生成不同周期的正弦波:
由于定时器设置为250us进入一次中断,每秒可进入中断4000次,为了生成25HZ的正弦信号,一个周期内生成160个数据;为了生成200HZ的正弦信号,一个周期内生成20个数据,故代码如下:
sin_1=arm_sin_f32(3.141592654*i/80)+1;//25HZ 信号
sin_2=arm_sin_f32(3.141592654*i/10)+1;//200HZ 干扰
if(i==161)
{
i=1;
}


然后将200HZ_sin缩小0.4倍以后同25HZ_sin混合到一起:

通过matlab设计所需滤波器参数,然后生成所需数组,并导入单片机:

然后将滤波器的输入值设置为每次混合波形的计算值,将输出数据发送至上位机,并显示成波。



2023/05/10于西安