OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2866|回复: 4

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

[复制链接]

6

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
金钱
354
注册时间
2016-4-12
在线时间
97 小时
发表于 2016-12-11 19:56:51 | 显示全部楼层 |阅读模式
这几天移植了原子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函数
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-11-20
在线时间
22 小时
发表于 2016-12-23 21:30:48 | 显示全部楼层
printf函数在MDK中,为什么需要重定向,楼主有没有深究???
回复 支持 反对

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2016-12-24 09:42:18 | 显示全部楼层
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;
}
让我们的思维驾驭在电的速度之上!
回复 支持 反对

使用道具 举报

6

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
金钱
354
注册时间
2016-4-12
在线时间
97 小时
 楼主| 发表于 2016-12-24 17:07:14 | 显示全部楼层
hlz1490781325 发表于 2016-12-23 21:30
printf函数在MDK中,为什么需要重定向,楼主有没有深究???

肯定是有问题的时候  比如当你需要用串口1但是程序其他部分调用了Printf函数 就可能出现问题
回复 支持 反对

使用道具 举报

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-11-20
在线时间
22 小时
发表于 2017-1-9 19:39:44 | 显示全部楼层
过眼烟云 发表于 2016-12-24 17:07
肯定是有问题的时候  比如当你需要用串口1但是程序其他部分调用了Printf函数 就可能出现问题

我是想问重定向的本质是什么,我看到原子哥有说,这是半主机模式,就想问一下你是否研究过
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-23 23:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表