打印
[STM32F7]

NUCLEO144-F722评测-浮点运算**分形计算

[复制链接]
962|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
9robot|  楼主 | 2017-3-30 12:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
       在学习STM32是一直用的是正点原子的教程。之前看过有关Julia分形计算。感觉挺有意思,就自己试了试。在原子的程序基础上改了改,利用1.77寸的液晶屏来显示。效果还可以接受。修改的过程很简单,基本上了解了Julia分型的原理后,主要代码不用改,只是改一下和液晶屏显示有关的内容,我用的是串口屏,也没有使用F7自带的液晶屏接口,使用软件模拟的方式,刷屏速率较低。
void GenerateJulia_fpu(u16 size_x,u16 size_y,u16 offset_x,u16 offset_y,u16 zoom)
{
        u8 i;
        u16 x,y;  
        float tmp1,tmp2;
        float num_real,num_img;
        float radius;
        for(y=0;y<size_y;y++)
        {
               for(x=0;x<size_x;x++)
                   {
                       num_real=y-offset_y;
                 num_real=num_real/zoom;
                   num_img=x-offset_x;
                  num_img=num_img/zoom;
                   i=0;
                  radius=0;
                   while((i<ITERATION-1)&&(radius<4))
                   {
                             tmp1=num_real*num_real;
                       tmp2=num_img*num_img;
                      num_img=2*num_real*num_img+IMG_CONSTANT;
                       num_real=tmp1-tmp2+REAL_CONSTANT;
                       radius=tmp1+tmp2;
                      i++;
                   }
                                  lcdbuf[128-x-1]=color_map[i];                  
               }
                            LTDC_Color_Fill(0,y,128-1,y+1,lcdbuf);       
        }
}


       对比完成一次Julia分型计算的时间,分四种情况进行对比:1、不开硬件加速,不适用硬件FPU;2、开硬件加速,不用硬件FPU;3、用硬件FPU,不使用硬件加速;4、使用硬件加速和硬件浮点运算
1、不开硬件加速,不适用硬件FPU,耗时2578.7毫秒


2、开硬件加速,不用硬件FPU;耗时558.3毫秒


3、用硬件FPU,不使用硬件加速,耗时554.3毫秒


4、使用硬件加速和硬件浮点运算,耗时110.6毫秒





这四种设置在比编译时都进行了优化,从结果上看,硬件浮点计算和硬件加速对于提高计算速度作用很明显,由于每刷一次屏过程中包含了和液晶屏有关的部分代码,所以不能直接按时间精确对比四种情况的效率,但是可以大概测试一下。

沙发
mmuuss586| | 2017-3-30 14:43 | 只看该作者

不错,谢谢分享;

使用特权

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

本版积分规则

16

主题

91

帖子

1

粉丝