简单的说,写了个函数 f1(u32 a,u32 b,float c),当c这个变量是表达式或是float变量,工作都不正常。
搞了几个小时都不成功,最后改了下,定义了两个全局变量。flaot x,y,然后
f1(u32 a,u32 b,float c)
{
y=c;
GUI_DispFloat(y,10);//在液晶屏上显示这个值
}
main()
{
....
while(1)
{
x=x+0.1;
f1(50,50,x);
}
}
最后结果就是,y果然不等于x,y只在3个值之间变化 :0.000,2.000,-2.000
不管直接显示在液晶屏上,还是断点调试,y都不等于x
于是请教:这到底是KEIL的BUG,还是违背了 ARM 的函数参数传递规则,还是传递float参数有规定?
比如调试GUI的函数
void GUI_RotatePolygon(GUI_POINT* pDest, const GUI_POINT* pSrc, int NumPoints, float Angle);
就没有问题,这个函数的函数也够多,
但我只要用f1()传入float参数,然后在f1中把这个形参传给GUI_RotatePolygon函数,就出错了。
|