实现自己的printf函数

以下代码仅供参考,使用时需要根据不同的单片机进行匹配和修改,仅供有一定能力的人进行学习,不提供技术支持

 1 void ScreenPrintf(const char *cmd, ...)
 2 {
 3     uint8_t txt[30];                                //文本数组
 4     uint8_t *txt_p;                                 //文本数组指针
 5     memset(&txt,0,sizeof(txt));
 6     memset(&txt_p,0,sizeof(txt_p));
 7     va_list args;       //定义一个va_list类型的变量,用来储存单个参数
 8     va_start(args,cmd); //使args指向可变参数的第一个参数
 9     vsprintf((char *)txt, (const char *)cmd, args);
10     va_end(args);
11     txt_p = txt;
12     while(*txt_p!='\0')
13     {
14         USART_SCREEN_write(*txt_p);//这里修改成你单片机写入串口单字节的函数
15         txt_p++;
16     }
17     USART_SCREEN_write(0xff);//这里修改成你单片机写入串口单字节的函数
18     USART_SCREEN_write(0xff);//这里修改成你单片机写入串口单字节的函数
19     USART_SCREEN_write(0xff);//这里修改成你单片机写入串口单字节的函数
20 }
21 //使用时ScreenPrintf("n0.val=%d",MyData); //一次性发完命令和结束符