在2410中使用浮点<br />虽2410不提供浮点运算,但是我发现定义浮点,和做一些三角运算,好像还是可以的。<br />只是有时会出一些莫名其妙的问题。<br />因为UCGUI在void GUI_RotatePolygon(GUI_POINT* pDest, const GUI_POINT* pSrc, int NumPoints, float Angle)中要用到浮点,而我的需求要表针转动,所以野蛮的在2410中做浮点运算。<br />但是导致了很多奇怪的问题出现:<br />static float Speed_State=310;<br />void GUIDEMO_Automotive(void)<br />{<br /><br />float Sub=1;<br />PARAM Param[1]; /* Parameters for drawing routine */ <br />GUI_AUTODEV AutoDev[1]; /* Object for banding memory device */<br /><br />GUI_MEMDEV_CreateAuto(&AutoDev[0]);<br /><br />GUI_AA_EnableHiRes();<br />GUI_AA_SetFactor(MAG);<br /><br /> while(1)<br /> {<br /> if(Mileage>=16)<br /> {<br /> Speed_State=Speed_State+Sub;<br /> Param[0].Angle =Speed_State*314/18000;<br /> GUI_RotatePolygon(Param[0].aPoints,<br /> _aNeedle_Navi, <br /> countof(_aNeedle_Navi), <br /> Param[0].Angle);<br /> GUI_MEMDEV_DrawAuto(&AutoDev[0], &Param[0].AutoDevInfo, _Draw_Speed, &Param[0]);<br /> }<br /> else<br /> {<br /> Speed_State=Speed_State-Sub;<br /> Param[0].Angle =Speed_State*314/18000;<br /> GUI_RotatePolygon(Param[0].aPoints,<br /> _aNeedle_Navi, <br /> countof(_aNeedle_Navi), <br /> Param[0].Angle);<br /> GUI_MEMDEV_DrawAuto(&AutoDev[0], &Param[0].AutoDevInfo, _Draw_Speed, &Param[0]);<br /> }<br /> <br /> //GUI_MEMDEV_DrawAuto(&AutoDev[0], &Param[0].AutoDevInfo, _Draw_Speed, &Param[0]);<br /> <br /> <br /> }<br /> <br /> <br />}<br /><br />1,Speed_State放到函数内部定义为局部变量时无法正常显示,但步调试发现地址错位<br />2,GUI_MEMDEV_DrawAuto放到if/else内显示不正常, 外显示正常;如果将Sub定义为int,也不能正常,将Sub放到函数上面 用 # define Sub 1 则GUI_MEMDEV_DrawAuto放到if/else内外显示都正常;<br /><br />初步猜测是定义的浮点导致了位无法对齐<br />大家有没有同样的遭遇和能解释的?可能在不带浮点的2410上进行浮点运算就是个罪孽。:)<br /><br /> |
|