关于printf打印函数重定义问题

2019-10-15 18:14发布

这几天移植了原子WIFI模块TCP Sever模式的程序
原子用的USART3连接WIFI模块,我的板子是USART1的
移植过来 除了串口变了外 程序基本上没变 但是接受数据一直
出错 最后发现是发送数据的几个函数中都用的Printf函数
感觉是这里数据互相干扰了  变重定义了打印函数 最后
程序果然正常了
操作实际上很简单
//重定义fputc
int fputc(int ch, FILE *f)
{      
       
        while((USART3->SR&0X40)==0);//Ñ-»··¢Ëí,Ö±μ½·¢Ëííê±Ï   
    USART3->DR = (u8) ch;      
        return ch;
}

里的USART1改成USART3  但是必须添加usart3_init函数
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
DongInker
2019-10-16 03:55
51里重新定义格式化打印函数
u8 _IDATA PrintfBuf[64];
#define DbgSendByte(m) Uart0Send(m)

u8 debug_printf(char *format,...)
{
        u8 length = 0,i = 0;

        va_list arg_ptr;

        va_start (arg_ptr, format);           /* format string */
        vsprintf (PrintfBuf, format, arg_ptr);
        va_end (arg_ptr);
        length = strlen(PrintfBuf);
        for(i=0;i<length;i++)
                DbgSendByte(PrintfBuf[i]);

        return length;
}

一周热门 更多>