STM32F767的FFT运算时间测试

测试函数

arm_cfft_radix2_f32(&scfft,fft_inputbuf);    

arm_cfft_radix4_f32(&scfft,fft_inputbuf);    

float fft_inputbuf[FFT_LENGTH*2];    //FFT输入数组
float fft_outputbuf[FFT_LENGTH];    //FFT输出数组


int main(void)
{
  /* USER CODE BEGIN 1 */
	uint16_t i;
	arm_cfft_radix2_instance_f32 scfft;

	Cache_Enable();                 //打开L1-Cache

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */


  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();

  MX_USART3_UART_Init();
  MX_TIM3_Init();
  /* USER CODE BEGIN 2 */
  HAL_TIM_Base_Start_IT(&htim3); //使能定时�????3和定时器3更新中断:TIM_IT_UPDATE

  arm_cfft_radix2_init_f32(&scfft,FFT_LENGTH,0,1);//初始化scfft结构体,设定FFT相关参数

 
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */

	  	for(i=0;i<FFT_LENGTH;i++)//生成信号序列
		{
			 fft_inputbuf[2*i]=100+
							   10*arm_sin_f32(2*PI*i/FFT_LENGTH)+
							   30*arm_sin_f32(2*PI*i*4/FFT_LENGTH)+
							   50*arm_cos_f32(2*PI*i*8/FFT_LENGTH);	//生成输入信号实部
			 fft_inputbuf[2*i+1]=0;//虚部全部�????0
		}


	  // arm_cfft_f32(&arm_cfft_sR_f32_len4096, fft_Input_f32, ifftFlag, doBitReverse);

	  // data = arm_sin_f32(3.1415926/6);		//对sin(PI/6 = 30�???????????)正弦值,求浮点�?�,理论上应为:1/2�???????????0.5
	  // printf("sin=%.2f\r\n",data);

	  	__HAL_TIM_SET_COUNTER(&htim3,0);//重设TIM3定时器的计数器�??
		timeout=0;
		arm_cfft_radix2_f32(&scfft,fft_inputbuf);	//FFT计算(基4�????
		arm_cmplx_mag_f32(fft_inputbuf,fft_outputbuf,FFT_LENGTH);	//把运算结果复数求模得幅�??
		//temp = ADC1247_Read();
		time=__HAL_TIM_GET_COUNTER(&htim3)+(uint32_t)timeout*50000;//计算�????????用时�????????
		printf("time = %0.3fms\r\n",((float)time*10)/1000);
    }
}

 总结:

1,主频越高,运算速度越快,功耗也越大。

2,打开Cache提速明显,但功耗略有增加。

3,基4比基2快不少。

4,点数增加一倍,运算时间大概增加一倍。

仅作笔记,不对欢迎指正

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值