你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
g921002 发表于 2017-12-26 19:02 使用DCache跟ICache時,如果使用DMA存取周邊要注意同步問題。
dlx6969 发表于 2018-2-4 22:01 void Test1(void) /*用默认math.h和单精度浮点数测试*/ {
意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器
望大师指点
/*用默认math.h和单精度浮点数测试*/
{
uint16_t i=0;
float Tr=0.0f;
float Ti=0.0f;
float Temp=0.0f;
for(i=0;i<1000;i++)
{
Tr+=1.0f;
Ti+=10.0f;
Temp=Ti-Tr*cos(2.0f*PI*i/N)+Ti*sin(2.0f*PI*i/N);
}
}
void Test2(void)
/*用默认math.h和双精度浮点数测试*/
{
uint16_t i=0;
float Tr=0.0;
float Ti=0.0;
float Temp=0.0;
for(i=0;i<1000;i++)
{
Tr+=1.0;
Ti+=10.0;
Temp=Ti-Tr*cos(2.0*PI*i/N)+Ti*sin(2.0*PI*i/N);
}
}
void Test3(void)
/*用DSP库和单精度浮点数测试*/
{
uint16_t i=0;
float Tr=0.0f;
float Ti=0.0f;
float Temp=0.0f;
for(i=0;i<1000;i++)
{
Tr+=1.0f;
Ti+=10.0f;
Temp=Ti-Tr*arm_cos_f32(2.0f*PI*i/N)+Ti*arm_sin_f32(2.0f*PI*i/N);
}
}
void Test4(void)
/*用DSP库和双精度浮点数测试*/
{
uint16_t i=0;
float Tr=0.0;
float Ti=0.0;
float Temp=0.0;
for(i=0;i<1000;i++)
{
Tr+=1.0;
Ti+=10.0;
Temp=Ti-Tr*arm_cos_f32(2.0*PI*i/N)+Ti*arm_sin_f32(2.0*PI*i/N);
}
}
因为我用的F722,是不带双浮点FPU单元的;而你用的F767是带双浮点FPU单元的;所以767在处理双浮点数上面是有优势的。
通过你的实验也反应出双浮点单元在处理数据上面,如果数据精度要求不高的话,单精度比双精度数据处理速度上还是有一点点优势的