CoIDE串口重定向printf

使用CoIDE重定向printf函数,让其用USART1输出,参考了网上的答案,有的是版本太低,有个用Retarget_printf 组件的(参考连接http://blog.csdn.net/k331922164/article/details/50373762),试了都不行,折腾了一个中午使用了下面的方法暂时先用着,有个缺点是只能用printf,sprintf格式转化不行,将就着先,希望大神看到了此篇博文能支招一下:


添加C_Library

  • 1、修改syscalls.c 里的内容,如下图:
    这里写图片描述

UART_PutChar 改成自己的Uart1_PutChar(),我自己修改如下:
这里写图片描述


验证

这里写图片描述

使用ST-Link下载到MINI STM32开发板,使用串口助手查看

这里写图片描述

注意

这里写图片描述
配置选项(Configuration)基础设置(Basic Setting)那里我选择的是Not use C library ,但是我们之前添加了组件呀,应该是这个组件和配置的那个C library不同吧,我也试了Use Base C Library 也是可以的。
另外关于syscalls.c 文件里面有些函数是用户函数,我就是改了其中一个函数实现了printf的功能,那么sprintf理论上也是可以的,但是没有深究下去了,希望了解的同学可以互相交流一下。


2017/5/27更新
晚上重新测试了一下,使用Retarget_printf 组件可以输出整数格式和字符串格式,但是无法输出浮点型,而且这个组件的介绍也说了,使用这个组件可以使代码生成的文件体积减小,而用C_Library 这个组件再通过修改函数后实现的重定向,最后生成的程序是前面的4倍左右,有91k(HEX文件)体积太大了,所以用Retarget_printf组件实现重定向前还是尽量不用printf函数了


2017/6/2号更新

查看了相关的书籍《The Definitive Guide to Arm Cortex-M3 and Cortex-M4 Processors,Third Edition》,里面有重定向(Re-targeting)的说明,介绍了KEIL,IAR和GCC的,因为CoIDE使用的是GNU ARM工具链,下面是在GCC下的重定向说明:

这里写图片描述

CoIDE提供的C库C_Libray里有同样的函数,修改成自己的就可以了
。书上最后的注释应该少了一些,但是下一页也没有,从注释上也能知道重定向的代价是增加代码体积

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值