1158|4

1239

帖子

66

TA的资源

纯净的硅(中级)

楼主
 

【极海APM32F407 Tiny Board】5、DSP库FFT测试 [复制链接]

 

官方demo没有开优化,编译后烧录超级慢,开了O3优化后快不少。

#include "main.h"
#include "Board.h"
#include "stdio.h"

#include "apm32f4xx_gpio.h"
#include "apm32f4xx_misc.h"
#include "apm32f4xx_usart.h"


extern void DSPTestDemo(void);

uint32_t delay_init(void) 
{
	uint32_t c;

	/* Enable TRC */
	CoreDebug->DEMCR &= ~0x01000000;
	CoreDebug->DEMCR |=  0x01000000;

	/* Enable counter */
	DWT->CTRL &= ~0x00000001;
	DWT->CTRL |=  0x00000001;

	/* Reset counter */
	DWT->CYCCNT = 0;

	/* Check if DWT has started */
	c = DWT->CYCCNT;

	/* 2 dummys */
	__ASM volatile ("NOP");
	__ASM volatile ("NOP");

	/* Return difference, if result is zero, DWT has not started */
	return (DWT->CYCCNT - c);
}

void delay_ms(uint32_t ms) 
{
	uint32_t start = DWT->CYCCNT;
	/* Go to number of cycles for system */
	ms *= (SystemCoreClock / 1000);
	/* Delay till end */
	while ((DWT->CYCCNT - start) < ms);
}
int main(void)
{
    uint8_t keyType;
    
    /* Set system interrupt priority grouping */
    NVIC_ConfigPriorityGroup(NVIC_PRIORITY_GROUP_2);
    
    /* Init delay function */
    Delay_Init();

    /* Init LED */
    APM_MINI_LEDInit(LED2);
    APM_MINI_LEDInit(LED3);

    /* Init USART1 */
    USART1_Init(115200);

    /* Init KEY */
    APM_MINI_PBInit(BUTTON_KEY2, BUTTON_MODE_GPIO);
    APM_MINI_PBInit(BUTTON_KEY1, BUTTON_MODE_GPIO);

		delay_init();
    /* Wait board and module power on */
    delay_ms(200);
    
		uint32_t t1 = DWT->CYCCNT;
		DSPTestDemo();
		uint32_t t2 = DWT->CYCCNT;
		printf("time=%fus\n",(t2-t1)*1000000.0/SystemCoreClock);
		
    APM_MINI_LEDOn(LED3);
    
    while(1)
    {
        delay_ms(10);
    }
}


没有开启FPU情况下2048点FFT耗时约16.2ms,网友stm32f407的测试对比

尝试加入宏定义开启FPU,但是编译报错了。。

__FPU_PRESENT = 1,__FPU_USED = 1

 

 

最新回复

多之前把APM看成AT了,下的雅特力的例程,刚刚又装了极海的SDK试了下,添加__FPU_PRESENT=1,__FPU_USED=1定义会出现和你一样的错误 这种情况应该是__FPU_USED重复定义了,你看看只加__FPU_PRESENT=1不加__FPU_USED=1行不行 [attach]704230[/attach]     详情 回复 发表于 2023-6-9 20:40
点赞 关注
 
 

回复
举报

7056

帖子

11

TA的资源

版主

沙发
 
大佬出品果然是高深的测试。学习了!
 
 
 

回复

9798

帖子

24

TA的资源

版主

板凳
 

我试着在Firmware Library例程的MDK工程里定义__FPU_PRESENT=1,__FPU_USED=1可以编译通过

编译警告是因为  at32f403a_407.h里定义了__FPU_PRESENT

 

点评

回头试试  详情 回复 发表于 2023-6-8 21:58
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

1239

帖子

66

TA的资源

纯净的硅(中级)

4
 
littleshrimp 发表于 2023-6-5 11:24 我试着在Firmware Library例程的MDK工程里定义__FPU_PRESENT=1,__FPU_USED=1可以编译通过 编译 ...

回头试试

点评

多之前把APM看成AT了,下的雅特力的例程,刚刚又装了极海的SDK试了下,添加__FPU_PRESENT=1,__FPU_USED=1定义会出现和你一样的错误 这种情况应该是__FPU_USED重复定义了,你看看只加__FPU_PRESENT=1不加__FPU_USE  详情 回复 发表于 2023-6-9 20:40
 
 
 

回复

9798

帖子

24

TA的资源

版主

5
 

多之前把APM看成AT了,下的雅特力的例程,刚刚又装了极海的SDK试了下,添加__FPU_PRESENT=1,__FPU_USED=1定义会出现和你一样的错误

这种情况应该是__FPU_USED重复定义了,你看看只加__FPU_PRESENT=1不加__FPU_USED=1行不行

 

个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表