如何修改printf的输出端?

[复制链接]
6315|13
 楼主| 篮下打铁 发表于 2011-6-27 22:24 | 显示全部楼层 |阅读模式
本帖最后由 篮下打铁 于 2011-6-28 12:19 编辑

想用printf通过串口输出字符,如何实现?


补充:codewarrior 飞思卡尔的9s12x128
 楼主| 篮下打铁 发表于 2011-6-27 22:24 | 显示全部楼层
 楼主| 篮下打铁 发表于 2011-6-27 22:27 | 显示全部楼层
貌似是修改termio.h的函数?
会的说说
mohanwei 发表于 2011-6-27 23:15 | 显示全部楼层
keil?默认就是从串口输出的。不过默认是采用查询法,并且串口初始化后,需要把TI置1——原因自己看keil目录下的putchar.c
原野之狼 发表于 2011-6-27 23:26 | 显示全部楼层
用的是什么软硬件平台?
helongdm 发表于 2011-6-28 09:34 | 显示全部楼层
keil 中要重定向  例如stm32
/*******************************************************************************
        函数名:fputc
        输  入:
        输  出:
        功能说明:
        重定义putc函数,这样可以使用printf函数从串口1打印输出
*/
int fputc(int ch, FILE *f)
{
        /* Place your implementation of fputc here */
        /* e.g. write a character to the USART */
        USART_SendData(USART1, (uint8_t) ch);

        /* Loop until the end of transmission */
        while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
        {}

        return ch;
}
 楼主| 篮下打铁 发表于 2011-6-28 10:15 | 显示全部楼层
5# 原野之狼

codewarrior 飞思卡尔的9s12x128
 楼主| 篮下打铁 发表于 2011-6-28 10:21 | 显示全部楼层
4# mohanwei

这个putchar.c是标准库里的东西,貌似看不到的吧!
有个void TERMIO_PutChar(char ch);的改了就可以输出了。
在TERMIO.H的里的,这个TERMIO.H是什么?
 楼主| 篮下打铁 发表于 2011-6-28 10:26 | 显示全部楼层
6# helongdm

你的意思是printf是通过fputc输出的,修改fputc就可以了。
但是fputc是stdio.h里面的,怎么能打开查看呢?
xwj 发表于 2011-6-28 10:30 | 显示全部楼层
重定义putchar(或类似)函数即可,会自动覆盖库的
 楼主| 篮下打铁 发表于 2011-6-28 10:40 | 显示全部楼层
10# xwj

termio.h 里面的TERMIO_PutChar是什么东西?
有个程序修改了这个也可以。
helongdm 发表于 2011-6-28 10:56 | 显示全部楼层
在keil  C51可重写个printf函数   你想用printf无非就是想用他的格式化输出对吧  写个格式化输出
xwj 发表于 2011-6-28 11:00 | 显示全部楼层
LZ,先说明是什么CPU、什么编译器
原野之狼 发表于 2011-6-28 11:15 | 显示全部楼层
翻阅下你的开发平台的文档里关于 重定向 的内容介绍
基本的思路LS各位已经指出来了 不外乎修改一些IO函数  具体是什么函数那就查文档吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

17

帖子

0

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