实现自己的printf函数

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

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