今天做了关于F767的FPU测试,发现是有效果,但是效果好些没有宣传的那么好。主要测试代码如下:
[mw_shl_code=c,true]
volatile u32 count=0;
int main(void)
{
double a=1.1;
u32 b=0,c,d;
Cache_Enable(); //打开L1-Cache
HAL_Init(); //初始化HAL库
Stm32_Clock_Init(432,25,2,9); //设置时钟,216Mhz
delay_init(216); //延时初始化
uart_init(115200); //串口初始化
LED_Init(); //初始化LED
TIM3_Init(10-1,10800-1); //定时器3初始化,定时器时钟为108M,分频系数为10800-1,
//所以定时器3的频率为108M/10800=10K,自动重装载为10-1,那么定时器周期就是1ms
while(1)
{
c=count;
a=1.1;
for(b=0;b<9999999;b++)
{
a=a+1.1-0.234*a;
}
d=count;
LED0_Toggle;
printf("计算前:%d 计算后:%d 时差:%d =%lf
",c,d,(u32)(d-c),a);
}
}
//定时器3中断服务函数调用
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim==(&TIM3_Handler)) //1ms
{
count++;
if(count%1000==0)
LED1_Toggle; //LED0反转
}
}[/mw_shl_code]
测试发现,在未选择FPU和选择FPU(Use Double Precision)情况下,结果分别为:
分别耗时4961ms和834ms,约6倍。这个属于正常吗,好像没有10倍多。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>