硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5685|回复: 3
收起左侧

[有问必答] Printf函数打印功能如何实现多个串口打印?

[复制链接]

2

主题

4

回帖

10

积分

新手上路

路在脚下,有我有天下

积分
10
发表于 2014-11-23 20:49:58 | 显示全部楼层 |阅读模式
最近,在调试printf函数串口打印功能时,printf只能映射到一个串口上,如何将printf函数同时映射到两个串口,比如一个用于显示屏(URAT5),一个用于打印机(USRAT1),两个串口可能同时使用,请问如何实现?谢谢!
回复

使用道具 举报

116

主题

800

回帖

1148

积分

至尊会员

积分
1148
QQ
发表于 2014-11-24 08:56:21 | 显示全部楼层
最简单的就是直接两个串口独立输出,[s:123]
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107452
QQ
发表于 2014-11-24 18:17:53 | 显示全部楼层
设置个标志,根据不同的标志在重映射函数fputc和fgetc里面设置不同的串口输出和输入。
回复

使用道具 举报

747

主题

1049

回帖

3295

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3295
发表于 2014-11-25 20:03:32 | 显示全部楼层
/*
*********************************************************************************************************
*    函 数 名: fputc
*    功能说明: 重定义putc函数,这样可以使用printf函数从串口1打印输出
*    形    参: 无
*    返 回 值: 无
*********************************************************************************************************
*/
int fputc(int ch, FILE *f)
{
#if 1    /* 将需要printf的字符通过串口中断FIFO发送出去,printf函数会立即返回 */
    comSendChar(COM1, ch);
        comSendChar(COM5, ch);

    return ch;
#else    /* 采用阻塞方式发送每个字符,等待数据发送完毕 */
    /* 写一个字节到USART1 */
    USART_SendData(USART1, (uint8_t) ch);

    /* 等待发送结束 */
    while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
    {}

    return ch;
#endif
}
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-1 09:36 , Processed in 0.154877 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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