STM32f429使用DSP库相应函数进行FFT、IFFT、复数共轭\、相乘等操作

本文介绍了如何在STM32F4单片机上利用DSP库进行快速傅里叶变换(FFT)、逆FFT(IFFT)、复数共轭和复数乘法等操作。通过友善串口助手展示实操过程和结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STM32F4中进行FFT等复数运算相应函数使用方法,使用友善串口助手查看函数运行结果

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "key.h"
#include "math.h"
#include "arm_math.h"
#include "arm_const_structs.h"
/************************************************
 ALIENTEK 阿波罗STM32F429开发板实验3
 串口实验-HAL库函数版
 技术支持:www.openedv.com
 淘宝店铺:http://eboard.taobao.com 
 关注微信公众平台微信号:"正点原子",免费获取STM32资料。
 广州市星翼电子科技有限公司  
 作者:正点原子 @ALIENTEK
************************************************/
#define F 10  //
#define PI2 6.28318530717959

__IO uint16_t  ADC1ConvertedValue[4096];

float rfft_inputbuf[F];
float rfft_outputbuf[F*2];
float routputbuf[F];//幅度输出数组

float cfft_inputbuf[F*2];
//float cfft_outputbuf[4096*2];
float coutputbuf[F];//幅度输出数组

float conj_rfft_outputbuf[F*2];
	float squared_rfft_outputbuf[F];

	float mult_fft_outputbuf[F*2];
	float mult_real_fft_outputbuf[F*2];
	float sub_fft_outputbuf[F*2];
	float scale_fft_outputbuf[F*2];


int main(void)
{
   
    
	
//    u8 len;	
//	u16 times=0; 
    HAL_Init();                     //初始化HAL库   
    Stm32_Clock_Init(360,25,2,8);   //设置时钟,180Mhz
    delay_init(180);                //初始化延时函数
    uart_init(115200);              //初始化USART
    LED_Init();                     //初始化LED 
    KEY_Init();                     //初始化按键

	for(int j =0; j<F; j++)
	{
   
		rfft_inputbuf[j]=0.0f;
		routputbuf[j]=0.0f;
				squared_rfft_outputbuf[j]=0.0f;
		coutputbuf[j]=0.0f;
	}
	for(int j =0; j<F*2; j++)
	{
   
		rfft_outputbuf[j]=0.0f;
		cfft_inputbuf[j]=0.0f;
				conj_rfft_outputbuf[j]=0.0f;
				mult_fft_outputbuf[j]=0.0f;
				mult_real_fft_outputbuf[j]=0.0f;
				sub_fft_outputbuf[j]=0.0f;
				scale_fft_outputbuf[j]=0.0f;
//		cifft_inputbuf[j]=0.0f;
	}<
内容摘要: 本设计是基于 本设计是基于 Cortex-M4 内核 的 STM32的数字示波器,使用主控芯 片为 STM32F439,主频 180M,外部扩展的 16MB的 FLASH。本设计主要由三大 本设计主要由三大 部分组成。第一大是 硬件 部分:芯片内有三个置 ADC来进行信号采样,主 控外接一个 800*480的 TFTLCD显示屏 来显示待测信号; 来显示待测信号; 第二大部分是 显示部分 部分 :该设计使用了 Seagger公司的 公司的 eMwin作为显示 输入 插件,通过该可以实 时的显示波形,并且可以通过触摸键盘进行 交互 操作;第三部分则是数据处理的 一 些算法:本设计在内 s部有 N=512的 FFT算法、基于线性插值的 算法、基于线性插值的 时基变换递归 算法、递推平均滤波等用来处理采样数据。 该设计 实现了常规双通道示波器的 XY/YT显示方式, 显示方式, 采样频率达到 3.2MS/s,带宽 300KHz,在不开启 FFT功能时 功能时 FPS为 0.41,开启时 为 0.8左右, 能很好的 实时 显示出外部的函数发生器输入正弦波、方锯齿斜白噪声 等测试 信号,并且可以实时显示出 FFT曲线, 可以根据输入信号频率手动调节采 样频率, 内有 统计算法可以实时得到并显示电平信号的均值、 有效峰频率等物理量, 值得一提的是信号 频率的计算是基于 FFT算法得到的,在该设 算法得到的,在该设 计的带宽内失真 率不会超过 2%,误差较 小。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值