关于F767的FPU测试

2019-07-20 07:52发布

今天做了关于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倍多。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
正点原子
1楼-- · 2019-07-20 11:51
 精彩回答 2  元偷偷看……
善良的二哥
2楼-- · 2019-07-20 15:23
 精彩回答 2  元偷偷看……

一周热门 更多>