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