void LCD_Printf(u16 x, u16 y, u8 size, char *str, ...)
{
u16 tempx = x;
va_list pArgs; //处理后面的三个点
char *p;
p = mymalloc(SRAMIN,6*32); //申请内存,p存放申请后的首地址
va_start(pArgs, str);
vsnprintf(p,6*32,str,pArgs); //格式化成字符串,处理 ... 多参数,一定要用v printf
va_end(pArgs);
while(x <= lcddev.width) //清除显示区域
{
LCD_ShowChar(x,y,' ',size,0);
x = x + size/2;
}
x = tempx;
while(x <= lcddev.width && (*p) != 0) //显示格式化后的字符串
{
LCD_ShowChar(x,y,*p,size,1);
x = x + size/2;
p++;
}
myfree(SRAMIN,p); //释放申请的内存,不释放会造成内存泄漏,要避免
}
|