找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2511|回复: 1
打印 上一主题 下一主题
收起左侧

STM32 OLED频谱程序(fft)

[复制链接]
跳转到指定楼层
楼主
ID:336427 发表于 2020-1-15 21:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人使用STM32F103C8T6和oled屏幕显示频谱,已经成功调试,链接如下: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. }
复制代码

fftOLED显示(Over).7z

3.28 MB, 下载次数: 123, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:115798 发表于 2020-5-5 23:15 | 只看该作者
感谢分享!好资料,学习了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表