標(biāo)題: STM32 OLED頻譜程序(fft) [打印本頁]

作者: 磊雷雷    時間: 2020-1-15 21:26
標(biāo)題: STM32 OLED頻譜程序(fft)
本人使用STM32F103C8T6和oled屏幕顯示頻譜,已經(jīng)成功調(diào)試,鏈接如下:https://www.bilibili.com/video/av61148722,效果可觀看嗶哩嗶哩視頻比較稀有使用hal庫
一下是部分代碼
  1. void SystemClock_Config(void);

  2. /* USER CODE BEGIN PFP */
  3. /* Private function prototypes -----------------------------------------------*/
  4. /* ½öÔêDí±¾ÎļtÄúμ÷óÃμÄoˉêyéùÃ÷ */
  5. static void PrintfLogo(void);
  6. static void arm_rfft_fast_f32_app(void);
  7. static void arm_rfft_q15_app(void);
  8. static void arm_rfft_q31_app(void);
  9. void PowerMag(uint16_t _usFFTPoints);
  10. void DSP_FFT1024(void);
  11. void DSP_FFT256(void);
  12. /* êäèëoíêä3ö»o3å */
  13. #define TEST_LENGTH_SAMPLES 2048
  14. static float32_t testInput_f32_10khz[TEST_LENGTH_SAMPLES];
  15. static float32_t testOutput_f32_10khz[TEST_LENGTH_SAMPLES];
  16. static float32_t testOutput[TEST_LENGTH_SAMPLES];

  17. static q15_t testInput_q15_50hz[TEST_LENGTH_SAMPLES];
  18. static q15_t testOutputQ15[TEST_LENGTH_SAMPLES];
  19. static q15_t testOutput_q15_50hz[TEST_LENGTH_SAMPLES];

  20. static q31_t testInput_q31_50hz[TEST_LENGTH_SAMPLES];
  21. static q31_t testOutputQ31[TEST_LENGTH_SAMPLES];
  22. static q31_t testOutput_q31_50hz[TEST_LENGTH_SAMPLES];

  23. void OLED_Draw4Line(u8 x1,u8 y1,u8 x2,u8 y2);
  24. void OLED_Draw2Line(u8 x1,u8 y1,u8 x2,u8 y2);
  25. u8 str[100];
  26. /* 񄠨 */
  27. uint32_t fftSize = 1024;
  28. uint32_t ifftFlag = 0;
  29. uint32_t doBitReverse = 1;
  30. /* USER CODE END PFP */


  31. void DSP_FFT256(void)
  32. {
  33.                 uint16_t i,x,y;
  34.                 /* »ñμÃ256¸ö2éÑùμã */
  35.                 for (i = 0; i < 256; i++)
  36.                 {
  37.                         input[i] =(((signed short)uhADCxConvertedValue[0])-2048) << 16;        
  38.                         delay_us(100);
  39.                 }
  40.                 /* ¼ÆËã256μãFFT
  41.                 output£oêä3ö½á1û£¬¸ß16λêÇDé2¿£¬μí16λêÇêμ2¿¡£
  42.                 input £oêäèëêy¾Y£¬¸ß16λêÇDé2¿£¬μí16λêÇêμ2¿¡£
  43.                 μúèy¸ö2Îêy±ØDëêÇ256¡£
  44.                 */
  45.                 cr4_fft_256_stm32(output, input, 256);
  46.                 /* Çó·ùÖμ */
  47.                 PowerMag(256);
  48.                
  49.                 OLED_Clear();
  50.                 for(i=0;i<128;i++)
  51.                 {
  52.                         x = i;
  53.                         y = Mag[i]/1.6;
  54.                         OLED_Draw4Line(x,0,x,y);
  55.                 }               
  56.                 OLED_Refresh();
  57.                 /* ′òó¡êä3ö½á1û */
  58. //                for (i = 0; i < 256/2; i++)
  59. //                {
  60. //                                printf("%4d, %.2f %10d\n",i,(((float)i*10000/256)),Mag[i]);
  61. //                }
  62. }
復(fù)制代碼

fftOLED顯示(Over).7z

3.28 MB, 下載次數(shù): 125, 下載積分: 黑幣 -5


作者: 373996214    時間: 2020-5-5 23:15
感謝分享!好資料,學(xué)習(xí)了。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1