[嵌入式类] 重定向printf

[复制链接]
 楼主| caijie001 发表于 2018-1-19 09:18 | 显示全部楼层 |阅读模式
本帖最后由 caijie001 于 2018-1-19 09:23 编辑

学习stm32,打交道最多的莫过于串口通讯了,但是官方的串口发送库太恶心了,完全不好用甚是还念C语言的printf,想输出什么就有什么,
现在,一步步来做个重定向,让你的stm32可以跟C语言一样能想看什么就看什么:

首先:

添加printf的头文件 :
  #include <stdio.h>    //当时学C语言最熟悉的stdio.h


其次:


改写int fputc(int ch, FILE *f)函数


int fputc(int ch, FILE *f);

int fputc(int ch, FILE *f)
{

USART_SendData(USARTx, (uint8_t) ch);

while (USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET);

return ch;
}

最后:

在keil 平台上改下设置:

Use MicroLIB  ->Target -> Code Generation -> 选中Use MicroLIB

当然,前提是你初始化了USARTx


在IAR中一样的:

只不过最后一个设置改一下Projec t- >Options -> General Options -> Library Configuration中的Library 项由"Normal"改为"Full"



评论

杰杰辛苦了。  发表于 2018-1-21 21:09
gujiamao12345 发表于 2018-1-19 17:57 | 显示全部楼层
也不一定要用printf,可以写成my_printf,主要要对参数进行解析,尤其浮点数显示比较麻烦,但是相对于printf,应该小占用很多资源
一路向北lm 发表于 2018-1-21 21:09 | 显示全部楼层
这个很重要,调试的时候很重要
 楼主| caijie001 发表于 2018-1-22 08:02 | 显示全部楼层
一路向北lm 发表于 2018-1-21 21:09
这个很重要,调试的时候很重要

哈哈哈是的 是的
山东电子小菜鸟 发表于 2018-1-28 11:41 | 显示全部楼层
感谢 分享
antusheng 发表于 2020-4-24 23:15 | 显示全部楼层
问一下,为何有的单片机重定向串口用的是putchar()
而有的用的是fputc()
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:21ic公开课专区:http://open.21ic.com/ 21ic资料下载中心:http://dl.21ic.com/ 21ic项目外包中心:http://project.21ic.com/ 杰杰欢迎大家有空常来赛事专区逛逛

131

主题

3790

帖子

63

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:21ic公开课专区:http://open.21ic.com/ 21ic资料下载中心:http://dl.21ic.com/ 21ic项目外包中心:http://project.21ic.com/ 杰杰欢迎大家有空常来赛事专区逛逛

131

主题

3790

帖子

63

粉丝
快速回复 在线客服 返回列表 返回顶部