在移植ucgui的demo的时候,因为原子哥的库是不能修改屏的大小的,我直接使用源代码,如图
移植完成后在跑的时候只能跑第一遍,跑第二遍的时候就死在第一页上了。
void GUIDEMO_Intro(void) {
int xCenter = LCD_GET_XSIZE() / 2;
int y;
char acText[50] = "Version of 礐/GUI: ";
strcat(acText, GUI_GetVersionString());
GUI_SetBkColor(GUI_BLUE);
GUI_SetColor(GUI_YELLOW);
GUI_Clear();
GUI_SetFont(&GUI_Font13B_1);
GUI_DispStringHCenterAt("礐/GUI", xCenter, y= 10);
GUI_SetFont(&GUI_Font10_ASCII);
GUI_SetColor(GUI_WHITE);
GUI_DispStringHCenterAt("Universal graphic software"
"\nfor embedded applications"
, xCenter, y += 20);
GUI_SetFont(&GUI_Font10S_ASCII);
GUI_DispStringHCenterAt("Compiled " __DATE__ " "__TIME__, xCenter, y += 25);
GUI_DispStringHCenterAt(acText, xCenter, y += 16);
printf("GUIDEMO_Delay(2000);\t\n");
GUIDEMO_Delay(2000); //第二次运行时挂掉了 进去出不来,屏显示一直不动。
printf("next www.PowerAVR.com\t\n");
GUI_Clear();
GUI_DrawBitmap(&bmMicriumLogo, (LCD_GET_XSIZE() - bmMicriumLogo.XSize) / 2, 6);
GUI_SetFont(&GUI_Font13B_1);
GUI_DispStringHCenterAt("www.PowerAVR.com", LCD_GET_XSIZE() / 2, LCD_GET_YSIZE() - 50);
GUIDEMO_Delay(2000);
}
int GUIDEMO_Delay(int t) {
char DEG2[200];
int r = 0;
#if GUI_WINSUPPORT
int tm, value;
#if GUIDEMO_LARGE
PROGBAR_Handle hProg;
#endif
WM_SetForegroundWindow(_ahButton[0]);
#if GUIDEMO_LARGE
hProg = (t >100) ? PROGBAR_CreateAsChild(10, 10, 60, 7, _ahInfoWin[1], 0,
WM_CF_SHOW | WM_CF_STAYONTOP| WM_CF_MEMDEV) : 0;
PROGBAR_SetMinMax(hProg, 0, t);
#endif
tm = GUI_GetTime();
sprintf(DEG2,"GUIDEMO_Delay--OSTimeGet()/tm:%d\r\n",tm);
printf(DEG2);
do {
value = GUI_GetTime() - tm;
#if GUIDEMO_LARGE
PROGBAR_SetValue(hProg, value);
WM_ExecIdle();
#endif
sprintf(DEG2,"GUIDEMO_Delay--OSTimeGet()/value:%d,next GUI_Delay(10)!\r\n",value);
printf(DEG2);
GUI_Delay(10);
} while ((value < t) && !GUIDEMO_CheckCancel());
#if GUIDEMO_LARGE
PROGBAR_Delete(hProg);
#endif
_UpdateCmdWin();
WM_ExecIdle();
#else
GUI_Delay(t);
#endif
return r;
}
使用这两句进行调试输出可以看到。
GUIDEMO_Delay--OSTimeGet()/tm:138502
GUIDEMO_Delay--OSTimeGet()/value:42,next GUI_Delay(10)!
GUIDEMO_Delay--OSTimeGet()/value:370,next GUI_Delay(10)!
GUIDEMO_Delay--OSTimeGet()/value:445,next GUI_Delay(10)!
GUIDEMO_Delay--OSTimeGet()/value:520,next GUI_Delay(10)!
GUIDEMO_Delay--OSTimeGet()/value:595,next GUI_Delay(10)!
GUIDEMO_Delay--OSTimeGet()/value:670,next GUI_Delay(10)!
GUIDEMO_Delay--OSTimeGet()/value:745,next GUI_Delay(10)!
GUIDEMO_Delay--OSTimeGet()/value:820,next GUI_Delay(10)!
OSTimeGet():139406
GUIDEMO_main()!
GUIDEMO_Delay(2000);
GUIDEMO_Delay--OSTimeGet()/tm:139800
GUIDEMO_Delay--OSTimeGet()/value:43,next GUI_Delay(10)!
然后就不动了。后面就没有了
不知道谁知道这个是什么原因,如果是我系统时钟有问题应该是第一次都没办法跑下来才对,但是第一次跑成功了,只在第二次跑到第一页的时候才挂掉。
|