打印
[应用相关]

基于STM32F407的FPU浮点运算

[复制链接]
3218|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Stannis|  楼主 | 2017-12-26 18:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于STM32F407的FPU浮点运算

FPU浮点运算.rar

71.39 KB

沙发
天灵灵地灵灵| | 2017-12-26 18:28 | 只看该作者
下载学习学习。

使用特权

评论回复
板凳
天灵灵地灵灵| | 2017-12-26 18:28 | 只看该作者
这是一个工程文件,只有注释可以参考。给大家看看主函数
#include "main.h"

#define TEST_LENGTH_SAMPLES 2048

//FFT Bin输入输出缓冲
extern float32_t testInput_f32_10khz[TEST_LENGTH_SAMPLES];
static float32_t testOutput[TEST_LENGTH_SAMPLES/2];

uint32_t fftSize=1024;
uint32_t ifftFlag=0;
uint32_t doBitReverse=1;  
uint32_t refIndex=213,testIndex=0;/* Reference index at which max energy of bin ocuurs */

/*Max magnitude FFT Bin test*/
int main(void)
{
        arm_status status;
        arm_cfft_radix4_instance_f32 S;
        float32_t maxValue;

        Key_Init();
        LED_Init();
        LCD_Init();
        LCD_Clear(BLUE);
        LCD_String(20,20,"FPU process demo",RED);
         
        status = ARM_MATH_SUCCESS;          
        //初始化CFFT/CIFFT单元
        status = arm_cfft_radix4_init_f32(&S,fftSize,ifftFlag, doBitReverse);
        //通过CFFT/CIFFT单元处理数据
        arm_cfft_radix4_f32(&S, testInput_f32_10khz);
        //通过复杂的幅度运算单元处理数据,以计算每个bin的幅度
        arm_cmplx_mag_f32(testInput_f32_10khz, testOutput,fftSize);  
        //计算最大值并返回一致的BIN值
        arm_max_f32(testOutput, fftSize, &maxValue, &testIndex);          
        if(testIndex !=  refIndex)status = ARM_MATH_TEST_FAILURE;

        while(status != ARM_MATH_SUCCESS)LCD_String(20,50,"ARM math failed",RED);
        LCD_String(20,50,"ARM math sucess",RED);
        while(1);
}


使用特权

评论回复
地板
xuanhuanzi| | 2017-12-26 19:16 | 只看该作者
这是单精度的还是双精度也行,学习一下。

使用特权

评论回复
5
xinxianshi| | 2017-12-26 19:41 | 只看该作者
内部带FPU吧,需要调用库函数。

使用特权

评论回复
6
小明的同学| | 2017-12-26 22:03 | 只看该作者
用的是ARM的库函数吧。

使用特权

评论回复
7
幸福小强| | 2017-12-27 11:43 | 只看该作者
可以用在429上吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

176

主题

721

帖子

1

粉丝