• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

stm32单片机串口

7aee7e2610dd3357 2018-09-28 浏览量:654
stm32单片机F1系列同时使用两个串口时为什么只有一个串口可以用printf打印输出?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • printf函数实际是一个宏,最终调用的是 fputc(int chFILE *f)这个函数,所以要想使用指定的串口就需要修改这个函数。

    int fputc(int chFILE *f)

        while(USART_GetFlagStatus(USART2USART_FLAG_TC) != SET);
        USART_SendData(USART2(unsigned char)ch);   
        while(USART_GetFlagStatus(USART2USART_FLAG_TC) != SET); 
        return (ch); 
    }

    • 发布于 2018-09-28
    • 举报
    • 评论 0
    • 1
    • 0

其他答案 数量:14
  • printf输出需要自己配置,也可以通过工具例如keil 可以通过增加 microlib 来实现
    • 发布于2018-09-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 同时输出两个不是不可以,但是没有意义,因为通讯时候如果需要可以直接用SPRINTF也挺简单的
    • 发布于2018-09-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 配置那个串口打印,这个串口才可以,没有配置的话不会打印的
    • 发布于2018-09-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 应该是 printf 里面的串口写死了。

    自己实现也不难,可以重新封装,把串口当作参数,传进去,传进去哪个串口发送到哪个串口。

    • 发布于2018-09-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 这要看printf重定向在哪个串口位置上了,一般只会定向一个串口来输出log文件,当然也可以修改为其他串口或者多个共存,只要修改fputc的映射位置和重命名不同的printf函数即可。
    • 发布于2018-09-28
    • 举报
    • 评论 0
    • 0
    • 0

  • printf是通过fputc重定义的,fputc里面用到哪个串口就是通过哪个串口的输出。

    • 发布于2018-09-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个函数是可以重定义的,你想用哪个串口就可以设置的!
    • 发布于2018-09-30
    • 举报
    • 评论 0
    • 0
    • 0

  • 只能把一个串口映射到printf,不然那不得乱套了,当然具体映射到哪个串口是可以设置的
    • 发布于2018-10-01
    • 举报
    • 评论 0
    • 0
    • 0

  • printf是一个宏定义,需要映射到一个指定的端口,你映射的是哪一个打印的就是哪一个
    • 发布于2018-10-04
    • 举报
    • 评论 0
    • 0
    • 0

  • printf要映射具体的串口的,设置的串口号才会有对应的输出
    • 发布于2018-10-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 你可以设置printf到地是用哪个串口输出,当然也可以两个同时输出
    • 发布于2018-10-21
    • 举报
    • 评论 0
    • 0
    • 0

  • printf是经过输出重定义的,使用fputc,重定义到哪一个串口就能使用哪一个串口,这个不能重定义到两个串口啊,所以同一时间只能有一个串口使用printf输出。不过可以自己定义另一个输出函数实现另一个串口打印输出。
    • 发布于2018-10-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以直接映射的到具体的串口打印相关信息
    • 发布于2018-11-11
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

stm32单片机串口