liuhongyu_2408
发表于 2012-10-29 12:54
乘法、除法、快速返回都加进去编译,主函数如下调用为什么总是不行呢?
extern float FPMUL(float value1, float value2); // 二进制浮点数快速乘法
extern float FPDIV(float value1, float value2); // 二进制浮点数快速除法
float c,d,e ;
void main(void)
{
c = 987.654321;
d = 123.456789
while(1)
{
e = 0;
e = FPMUL(c,d);
e = FPDIV(c,d);
_nop_();
}
}
Cortex-M0
发表于 2012-10-29 13:29
你如外挂库,如出错,是由于FPMUL,FPDIV 和Keil C51中保留字冲突,将函数改个名字重新编译即可。
你如不外挂库,外挂函数源程序,如出错,除了上述原因,还有可能这两个函数FPMUL,FPDIV用到的支持函数没有外挂全。
liuhongyu_2408
发表于 2012-10-29 14:01
我挂了三个: FPMUL.A51 、FPDIV.A51 、FPRET.A51 ,我只用浮点的乘除法。里面什么都不没改动,然后再主程序中直接按上述调用不行吗?
Cortex-M0
发表于 2012-10-29 17:45
因FPMUL,FPDIV 和Keil C51中保留字冲突,你写成
e = FPMUL(c,d);
e = FPDIV(c,d);
不行,但可按Keil C51标准写
e = c * d;
e = c / d;
或将所有的函数改个名字,如改成FPMUL1, FPDIV1, 避开和Keil C51中保留字冲突,按你上述方法即OK !
Cortex-M0
发表于 2012-10-29 17:47
注:函数改名应从 FPMUL.A51 、FPDIV.A51 内改起。
ymzsl
发表于 2014-6-19 17:05
支持SH79F6488的硬件平台吗
wjx460714055
发表于 2021-11-23 18:05
大佬 有参考的**说明一下 32*32的浮点快速算法么看不太懂