找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 3153|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

STM32 OLED頻譜程序(fft)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:336427 發(fā)表于 2020-1-15 21:26 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本人使用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

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:115798 發(fā)表于 2020-5-5 23:15 | 只看該作者
感謝分享!好資料,學習了。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表