OpenEdv-开源电子网

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

多串口要怎么修改fputc函数

[复制链接]

6

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
251
金钱
251
注册时间
2019-7-25
在线时间
57 小时
发表于 2019-8-20 15:32:07 | 显示全部楼层 |阅读模式
2金钱
原子哥的串口例程里fputc支持串口1,要用串口2printf可以将里面的寄存器改成串口2的,那如果我同时用两个串口呢?要怎么修改int fputc(int ch, FILE *f)
{      
        while((USART1->SR&0X40)==0);//循环发送,直到发送完毕   
    USART1->DR = (u8) ch;      
        return ch;
}

最佳答案

----------------肉粒多真好吃呀
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

16

主题

78

帖子

0

精华

高级会员

Rank: 4

积分
873
金钱
873
注册时间
2017-7-5
在线时间
130 小时
发表于 2019-8-20 15:32:08 | 显示全部楼层
  1. void u4_printf(char* fmt,...)
  2. {
  3.     u16 i,j;
  4.     va_list ap;
  5.     va_start(ap,fmt);
  6.     vsprintf((char*)UART4_TX_BUF,fmt,ap);
  7.     va_end(ap);
  8.     i=strlen((const char*)UART4_TX_BUF);                //此次发送数据的长度
  9.     for(j=0; j<i; j++)                                                        //循环发送数据
  10.     {
  11.         while((UART4->SR&0X40)==0);                        //循环发送,直到发送完毕
  12.         UART4->DR=UART4_TX_BUF[j];
  13.     }
  14. }
复制代码


这样的吗?
回复

使用道具 举报

6

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
251
金钱
251
注册时间
2019-7-25
在线时间
57 小时
 楼主| 发表于 2019-8-20 15:45:01 | 显示全部楼层

就是要另外直接定义printf函数吗?
因为我对这个fputc的机制不是很懂,不明白为什么定义了fputc就直接可以用printf打印了
----------------肉粒多真好吃呀
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10572
金钱
10572
注册时间
2017-2-18
在线时间
1914 小时
发表于 2019-8-20 18:47:45 | 显示全部楼层
2楼的方法可以实现效果与fputc一样
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 10:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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