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