|
- int main(void)
- {
- int i;
- delay_init(); //延時函數(shù)初始化
- uart_init(115200);
- LCD_Init();
- LCD_Clear(BLACK);
-
- TIM1_Int_Init(74,4); //192KHz采樣頻率
- ADC1_Configuration(); //ADC初始化
- DMA_Configuration(); //DMA初始化
- while(1)
- {
- for(i=0;i<NPT;i++)
- {
- lBufInArray[i]=ADC_Value[i]<<16;
- }
- cr4_fft_1024_stm32(lBufOutArray, lBufInArray, NPT);
- GetPowerMag();
- lcd_show_fft(lBufMagArray);
- }
- }
- u32 lBufInArray[NPT];
- u32 lBufOutArray[NPT];
- u32 lBufMagArray[NPT];
- float PI2=6.28318530717959;
- u32 Fs=192000;
- /******************************************************************
- 函數(shù)名稱:InitBufInArray()
- 函數(shù)功能:模擬采樣數(shù)據(jù),采樣數(shù)據(jù)中包含3種頻率正弦波
- 參數(shù)說明:
- 備 注:在lBufInArray數(shù)組中,每個數(shù)據(jù)的高16位存儲采樣數(shù)據(jù)的實部,
- 低16位存儲采樣數(shù)據(jù)的虛部(總是為0)
- *******************************************************************/
- void InitBufInArray(void)
- {
- unsigned short i;
- float fx;
- for(i=0; i<NPT; i++)
- {
- fx = 1000 * sin(PI2 * i * 1000.0 / Fs) +
- 3000 * sin(PI2 * i * 3000.0 / Fs) +
- 4000 * sin(PI2 * i * 5000.0 / Fs);
- lBufInArray[i] = ((signed short)fx) << 16;
- }
- }
- /******************************************************************
- 函數(shù)名稱:GetPowerMag()
- 函數(shù)功能:計算各次諧波幅值
- 參數(shù)說明:
- 備 注:先將lBufOutArray分解成實部(X)和虛部(Y),然后計算幅值(sqrt(X*X+Y*Y)
- *******************************************************************/
- void GetPowerMag(void)
- {
- signed short lX,lY;
- float X,Y,Mag;
- unsigned short i;
- for(i=0; i<NPT/2; i++)
- {
- lX = (lBufOutArray[i] << 16) >> 16;
- lY = (lBufOutArray[i] >> 16);
- X = NPT * ((float)lX) / 32768;
- Y = NPT * ((float)lY) / 32768;
- Mag = sqrt(X * X + Y * Y) / NPT;
- if(i == 0)
- lBufMagArray[i] = (unsigned long)(Mag * 32768);
- else
- lBufMagArray[i] = (unsigned long)(Mag * 65536);
- }
- }
復制代碼
|
-
-
FFT音頻實驗.7z
2020-8-3 14:22 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
257.4 KB, 下載次數(shù): 35, 下載積分: 黑幣 -5
|