STM32F4使用FPU+DSP库进行FFT运算的测试过程一 1 #include “stm32f4xx_conf.h” 2 //位带操作 3 #include “sys.h” 4 #include “delay.h” 5 #include “usart.h” 6 //LCD显示屏功能 7 #include “Nick_lcd.h” 8 #include “Nick_keys.h” 9 10 #include “arm_math.h” 11 #define FFT_LENGTH 1024 //FFT长度,默认是1024点FFT 12 13 float fft_inputbuf[FFT_LENGTH*2]; //FFT输入输出数组,此数组为arm_cfft_radix4_f32的输入输出数组,前一个素为实部,后一个为虚部,每两个素代表一个点. 14 float fft_outputbuf[FFT_LENGTH]; //arm_cmplx_mag_f32() 幅度输出数组 15 arm_cfft_radix4_instance_f32 scfft; 16 17 int main(void) 18 { 19 delay_init(168); 20 lcd_init(0); //初始化LCD 21 key_init(); 22 uart_init(); //初始化串口波特率为 23 24 arm_cfft_radix4_init_f32(&scfft,FFT_LENGTH,0,1);//初始化scfft结构体,设定FFT相关参数 25 26 while(1) 27 { 28 u32 keyval = (u32)keys_scan(0); 29 if(keyval==1) 30 { 31 for(int i=0;i<FFT_LENGTH;i++)//生成信号序列 32 { 33 fft_inputbuf[2*i]=15 + 10*arm_sin_f32(2*PI*i*100/FFT_LENGTH) + 34 5.5*arm_sin_f32(2*PI*i*150/FFT_LENGTH); //生成实部 35 36 fft_inputbuf[2*i+1]=0;//虚部全部为0 37 } 38 arm_cfft_radix4_f32(&scfft,fft_inputbuf); //FFT计算(基4) 39 arm_cmplx_mag_f32(fft_inputbuf,fft_outputbuf,FFT_LENGTH); //把运算结果复数求模得幅值 40 41 printf(“FFT Result: ”); 42 for(int i=0;i<FFT_LENGTH;i++) 43 { 44 printf(“%f ”,fft_outputbuf[i]); 45 } 46 } 47 delay_ms(60); 48 } 49 }
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/85328.html