这几天移植了原子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函数
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;
}
我是想问重定向的本质是什么,我看到原子哥有说,这是半主机模式,就想问一下你是否研究过
一周热门 更多>