STM32/STM8技术william hill官网
直播中

jinyi7016

12年用户 6608经验值
擅长:处理器/DSP
私信 关注
[经验]

【阿波罗STM32F767试用体验】Julia分形(硬件FPU)

程序使用了定时器 3做为时间统计功能,用于统计 Julia分形算法的运算时间。
如下,定时器3最大定时时间。
  1. tiM3_Init(65535,10800-1);

其他外设的程序在之前的帖子中已经分析过了,这里不再赘述了。
Julia分形算法原子的例程有两个,一个是打开FPU的一个是关闭FPU的,通过宏定义可以在LCD上显示。
主要的Julia分形算法函数如下:
  1. void GenerateJulia_fpu(u16 size_x,u16 size_y,u16 offset_x,u16 offset_y,u16 zoom)
  2. {
  3.         u8 i;
  4.         u16 x,y;  
  5.         float tmp1,tmp2;
  6.         float num_real,num_img;
  7.         float radius;
  8.         for(y=0;y
  9.         {
  10.                for(x=0;x
  11.                    {
  12.                        num_real=y-offset_y;
  13.                  num_real=num_real/zoom;
  14.                    num_img=x-offset_x;
  15.                   num_img=num_img/zoom;
  16.                    i=0;
  17.                   radius=0;
  18.                    while((i
  19.                    {
  20.                            tmp1=num_real*num_real;
  21.                        tmp2=num_img*num_img;
  22.                       num_img=2*num_real*num_img+IMG_CONSTANT;
  23.                      num_real=tmp1-tmp2+REAL_CONSTANT;
  24.                        radius=tmp1+tmp2;
  25.                       i++;
  26.                    }
  27.                         if(lcdltdc.pwidth!=0)lcdbuf[lcddev.width-x-1]=color_map[i];                //±£´æÑÕÉ«Öµµ½lcdbuf
  28.                         else LCD->LCD_RAM=color_map[i];//»æÖƵ½ÆÁÄ»
  29.                }
  30.                 if(lcdltdc.pwidth!=0)LTDC_Color_Fill(0,y,lcddev.width-1,y,lcdbuf);        //DM2DÌî³ä
  31.                
  32.         }
  33. }
但是原子的两个工程看上去是区分了打开硬件FPU与关闭FPU的两个工程,但实际上都是打开的,运行时的时间都是近似的。
也看了下工程配置,的确是都是打开的状态。

无标题.png

在操作上要注意,Key2的按下时间要长一点,好像并不是觖发式的。
先看一下打开硬件FPU时的运行
20170605_225340.jpg

20170605_225401.jpg

再看一下关闭硬件FPU的运行。

20170605_225520.jpg

20170605_230103.jpg

可以看到在打开硬件FPU时,运算时间是快了将近10几倍的。



回帖(1)

雷翌仁

2017-7-15 15:13:35

STemWin
STemWin
STemWin
举报

更多回帖

发帖
×
20
完善资料,
赚取积分