F4硬體FFT頻譜顯示

2021-08-29 13:53:09 字數 2019 閱讀 6364

#include

"sys.h"

#include

"delay.h"

#include

"usart.h"

#include

"led.h"

#include

"key.h"

#include

"lcd.h"

#include

"timer.h"

#include

"math.h"

#include

"arm_math.h"

#include

"adc.h"

#define fft_length 1024

//fft長度,預設是1024點fft

float fft_inputbuf[fft_length*2]

;//fft輸入陣列

float fft_outputbuf[fft_length]

;//fft輸出陣列

float outmax;

float frq;

u8 timeout;

//定時器溢位次數

u16 height;

intmain

(void

)arm_cfft_radix4_f32

(&scfft,fft_inputbuf)

;//fft計算(基4)

arm_cmplx_mag_f32

(fft_inputbuf,fft_outputbuf,fft_length)

;//把運算結果複數求模得幅值

//輸出最大分量

outmax=0;

frq=0;

for(i=

1; i2; i++)}

//20k/1024=19.5 每兩個點的間隔是19.5hz

printf

("%f\t\t%f\r\n"

,frq*

19.5

,outmax)

;//清屏

lcd_clear

(0xffff);

// //繪製水平刻度,因為所使用的示波器的分度是1.25khz/分度

// //為了方便對比,這裡也取1.25khz,即1.25k/19.5=64格

// point_color=red;

// for(i=0; i<5; i++)

// lcd_drawline(0,64*i,239,64*i);

// //繪製頻譜圖,因顯示屏解析度是320*240,這裡只取前0--319*19.5hz範圍的頻域進行顯示

// point_color=blue;

// for(i=1; i<319; i++)

//

//繪製水平刻度,因為所使用的示波器的分度是1.25khz/分度

//繪製0--10khz範圍的頻域進行顯示

//因為20khz的取樣速率決定了最大顯示的頻率是10khz,快速傅利葉變換後,後半截與前半截對稱,捨棄

point_color=red;

for(i=

0; i<

11; i=i+2)

lcd_drawline(0

,32*i,239,32

*i);

32div

point_color=blue;

for(i=

1; i<

256; i++)}

}

//定時器3中斷服務函式

void

tim3_irqhandler

(void

)tim_clearitpendingbit

(tim3,tim_it_update)

;//清除中斷標誌位

}

以正點原子f407開發板 實驗47 dsp測試實驗 例程為藍本,新增adc.c、adc.h到專案中,實現模擬訊號採集並做硬體快速傅利葉變換。

F4的實現方式

1 在螢幕編輯器的layout中,指定螢幕元素所使用的search help 2 使用函式的方法,在選擇螢幕上實現f4.所使用的函式為 f4if int table value request report ztest03.types begin of t s werks,werks type t0...

F4 陣列逆轉 10 分

本題要求實現乙個函式,可將乙個整型陣列裡的元素逆轉。例如原陣列是 1,3,5,7,9 逆轉之後變成 9,7,5,3,1 函式介面定義 void reverse int array,int size 其中引數 array是陣列首位址,size是陣列的長度 size 0 裁判測試程式樣例 函式被呼叫進行...

SAP中的F4幫助

今天在除錯標準程式的時候,意外的發現了乙個f4幫助的函式,感覺還是挺好用的。f4if field value request從函式名就可以看出是給字段新增f4幫助的。f4 help for fields that are only known at runtime這是這個函式的描述,即執行時使用。在...