- #include "dsp_filter.h"
- #define length 320
- #define numstatas 2
- static float32_t test_in[320];
- static float32_t test_out[320];
- static float32_t iir_stata[8];
- const float32_t IIRCoeffs32LP[5*numstatas] = {
- 1.0f, 2.0f, 1.0f, 1.4797988943972167f, -0.68867695305386178f,
- 1.0f, 2.0f, 1.0f, 1.2128120926202184f, -0.38400416228655354f
- };
- void filter_test(void)
- {
- u32 i=0;
- arm_biquad_casd_df1_inst_f32 S;
- float32_t Proportion;
-
- for(i=0;i<length;i++)
- {
- test_in[i]=arm_sin_f32(2*3.1415926*50*i/1000)+arm_sin_f32(2*3.1415926*250*i/1000);
- }
- arm_biquad_cascade_df1_init_f32(&S,numstatas,(float32_t *)&IIRCoeffs32LP[0],&iir_stata[0]);
- arm_biquad_cascade_df1_f32(&S,test_in,test_out,320);
- Proportion= 0.052219514664161221f * 0.04279801741658381f;
- for(i=0;i<length;i++)
- {
- printf("%f\r\n",test_out[i]*Proportion);
- }
- }
三、结果
四、主函数
- /*
- 昆明电器科学研究所 张恩寿 2019年5月3日
-
-
- */
- #include "bitband.h"
- #include "led_config.h"
- #include "systick.h"
- #include "usart.h"
- #include "spi_flash.h"
- #include "tft.h"
- #include "key_lookup.h"
- #include "dsp_filter.h"
- int main(void)
- {
- systick_config(120);
- nvic_priority_group_set(NVIC_PRIGROUP_PRE2_SUB2);
- usart0_init(115200);
- led_init();
- filter_test();
-
- while(1)
- {
- led_on();
- delay_nms(600);
- led_off();
- delay_nms(600);
- }
-
- }
五、MATLAB函数
- gd32=[0.000000
- 0.002925
- 0.020893
- 0.070248
- 0.153351
- 0.258624
- 0.382087
- 0.526850
- 0.677789
- 0.800785
- 0.871091
- 0.880735
- 0.818354
- 0.669428
- 0.441693
- 0.166833
- -0.126544
- -0.419203
- -0.680922
- -0.871749
- -0.969688
- -0.975598
- -0.889837
- -0.709505
- -0.451699
- -0.154097
- 0.152185
- 0.448280
- 0.706214
- 0.889093
- 0.977894
- 0.975770
- 0.884423
- 0.701365
- 0.443376
- 0.147382
- -0.156390
- -0.449879
- -0.705684
- -0.887207
- -0.975468
- -0.973478
- -0.882702
- -0.700396
- -0.443127
- -0.147681
- 0.155777
- 0.449177
- 0.705069
- 0.886780
- 0.975261
- 0.973466
- 0.882827
- 0.700589
- 0.443327
- 0.147845
- -0.155672
- -0.449136
- -0.705079
- -0.886824
- -0.975318
- -0.973520
- -0.882868
- -0.700612
- -0.443334
- -0.147838
- 0.155686
- 0.449152
- 0.705093
- 0.886834
- 0.975323
- 0.973521
- 0.882866
- 0.700608
- 0.443329
- 0.147834
- -0.155690
- -0.449154
- -0.705094
- -0.886834
- -0.975323
- -0.973521
- -0.882865
- -0.700609
- -0.443330
- -0.147835
- 0.155688
- 0.449153
- 0.705092
- 0.886832
- 0.975320
- 0.973517
- 0.882862
- 0.700605
- 0.443326
- 0.147832
- -0.155692
- -0.449155
- -0.705094
- -0.886832
- -0.975320
- -0.973517
- -0.882862
- -0.700605
- -0.443326
- -0.147833
- 0.155690
- 0.449154
- 0.705093
- 0.886832
- 0.975321
- 0.973519
- 0.882863
- 0.700607
- 0.443328
- 0.147833
- -0.155691
- -0.449155
- -0.705095
- -0.886835
- -0.975324
- -0.973521
- -0.882866
- -0.700608
- -0.443329
- -0.147834
- 0.155690
- 0.449155
- 0.705095
- 0.886835
- 0.975324
- 0.973522
- 0.882866
- 0.700608
- 0.443328
- 0.147833
- -0.155692
- -0.449157
- -0.705098
- -0.886838
- -0.975327
- -0.973524
- -0.882867
- -0.700608
- -0.443327
- -0.147831
- 0.155694
- 0.449159
- 0.705099
- 0.886840
- 0.975329
- 0.973527
- 0.882871
- 0.700614
- 0.443335
- 0.147839
- -0.155687
- -0.449154
- -0.705096
- -0.886838
- -0.975328
- -0.973527
- -0.882872
- -0.700616
- -0.443336
- -0.147841
- 0.155684
- 0.449150
- 0.705090
- 0.886830
- 0.975319
- 0.973517
- 0.882862
- 0.700606
- 0.443329
- 0.147837
- -0.155684
- -0.449147
- -0.705086
- -0.886827
- -0.975318
- -0.973519
- -0.882866
- -0.700611
- -0.443332
- -0.147837
- 0.155688
- 0.449153
- 0.705092
- 0.886832
- 0.975320
- 0.973517
- 0.882862
- 0.700606
- 0.443330
- 0.147838
- -0.155684
- -0.449148
- -0.705089
- -0.886831
- -0.975321
- -0.973521
- -0.882866
- -0.700609
- -0.443330
- -0.147834
- 0.155690
- 0.449154
- 0.705093
- 0.886832
- 0.975319
- 0.973516
- 0.882861
- 0.700605
- 0.443328
- 0.147835
- -0.155688
- -0.449153
- -0.705094
- -0.886835
- -0.975325
- -0.973523
- -0.882867
- -0.700609
- -0.443328
- -0.147832
- 0.155692
- 0.449156
- 0.705096
- 0.886835
- 0.975324
- 0.973522
- 0.882868
- 0.700613
- 0.443335
- 0.147841
- -0.155684
- -0.449150
- -0.705093
- -0.886835
- -0.975326
- -0.973525
- -0.882870
- -0.700613
- -0.443333
- -0.147836
- 0.155690
- 0.449155
- 0.705096
- 0.886837
- 0.975326
- 0.973525
- 0.882870
- 0.700614
- 0.443335
- 0.147840
- -0.155684
- -0.449150
- -0.705091
- -0.886832
- -0.975321
- -0.973519
- -0.882863
- -0.700605
- -0.443327
- -0.147834
- 0.155687
- 0.449148
- 0.705084
- 0.886822
- 0.975311
- 0.973511
- 0.882861
- 0.700609
- 0.443335
- 0.147843
- -0.155681
- -0.449148
- -0.705092
- -0.886837
- -0.975329
- -0.973528
- -0.882871
- -0.700612
- -0.443331
- -0.147835
- 0.155688
- 0.449151
- 0.705090
- 0.886830
- 0.975321
- 0.973522
- 0.882870
- 0.700618
- 0.443341
- 0.147847
- -0.155679
- -0.449147
- -0.705091
- -0.886833
- -0.975323
- -0.973521
- -0.882866
- -0.700609
- -0.443332
- -0.147840
- 0.155680
- 0.449142
- 0.705082
- 0.886824
- 0.975316
- 0.973520
- 0.882870
- 0.700618
- 0.443341
- 0.147847
- -0.155678
- -0.449144
- -0.705086
- -0.886827
- ];
- fs=1000;
- N=320;
- n=0:N-1;
- t=n/fs;
- f=n*fs/N;
- b=fir1(28,0.25);
- x=sin(2*pi*50*t)+sin(2*pi*250*t);
- x1=sin(2*pi*50*t);
- y=filter(b,1,x);
- subplot(311)
- plot(t,x),title('未滤波效果'),xlabel('时间'),ylabel('幅值'),grid;
- subplot(312)
- plot(t,x1),title('MATLAB 基波'),xlabel('时间'),ylabel('幅值'),grid;
- subplot(313)
- plot(t,gd32),title('GD32F303 IIR滤波效果'),xlabel('时间'),ylabel('幅值'),grid;