三个问题之一:TIMER的问题!!!
我写的一个秒表程序,整体可以运行,暂停,重置都没问题,
但是秒表运行部分有点问题,显示到了30秒,也就是30000毫秒
以后,刷新就间隔很长,大概一秒多刷新一次最近时间。
秒表计时部分的程序如下:
static void run_stopwatch(stopwatch *pMe)
{
char szChar[100];
int i;
m_ms=GETTIMEMS() - (pMe->lasttime);
m_tms=m_ms/10;
if(m_tms>=100)
{
m_ss=m_tms/100;
m_tms=m_tms%100;
if(m_ss>=60)
{
m_mm=m_ss/60;
m_ss=m_ss%60;
}
}
SPRINTF(szChar,"%.2d:%.2d:",m_mm,m_ss);
SPRINTF(szChar,"%s%.2d",szChar,m_tms);
for(i=0;szChar[i]!='\0';i++)
{
*(szText+i)=*(szChar+i);
}
*(szText+i)='\0';
//IDisplay_ClearScreen(pMe->a.m_pIDisplay);
IDisplay_DrawText(pMe->a.m_pIDisplay,
AEE_FONT_NORMAL,
szText,
-1,
0,
0,
NULL,
IDF_ALIGN_CENTER |IDF_ALIGN_MIDDLE);
ISHELL_CancelTimer(pMe->a.m_pIShell,(PFNNOTIFY)loop_stopwatch,pMe);
ISHELL_SetTimer(pMe->a.m_pIShell,20,(PFNNOTIFY)loop_stopwatch,pMe);
IDisplay_Update (pMe->a.m_pIDisplay);
}
lasttime是在结构体中定义的一个全局变量,用于存储秒表刚开始的时间。
其他变量定义如下:
uint32 m_tms=0; //十毫秒 [0-99]
uint32 m_ss=0; //秒 [0-59]
uint32 m_mm=0; //分 [0-59]
uint32 m_ms=0; //毫秒[0-最大值]
AECHAR szText[100]; //显示时间格式的字符串MM:SS:MS
请高手解答,为什么到30秒以后,刷新就要过1秒多.