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

串口打印数据疑问?

灵澈 2016-12-12 浏览量:1794

帮助会员:guyuemao 发问,请大家帮帮他,谢谢

串口打印数据疑问? 如图:













这句话之前 串口无打印 运行后串口有显示,但是 printf函数是怎么与串口发送联系到一起的?

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 这就好比你用笔写字一样,你是提笔了,但是你没有写。

    你自己知道是什么内容,但是别人不知道,只有写了别人才可以看见。所以要打印出来才能显示

    • 发布于 2016-12-12
    • 举报
    • 评论 1
    • 2
    • 0
guyuemao 回复了 冰山一角:纠结的是这个函数是怎么与底层联系起来的 回复

其他答案 数量:4
  • 还不知道你的具体程序是怎么调printf函数的,不过C语言中,printf函数封装好了的,所以一般直接调用这个函数,就会出来打印的信息,这就是别人写好的东西,调用而已。至于说为什么是出现在串口中,应该是跟你主体的程序有关系,我们自己编一个C语言的printf函数,运行就直接在dos界面或者你的编译器界面显示了。所以应该还是系统封装输出到串口,然后调用了这个printf的函数。

    以上是我的理解

    • 发布于2016-12-12
    • 举报
    • 评论 1
    • 0
    • 0
guyuemao 回复了 安卓小王子 :是的 自己写一个当然也可以 调用它的函数方便不少,一句话就解决了,如果是keil软件自己封装的话,不同芯片应该也不一样啊,软件里的定义也看不到这句话是怎么和芯片的寄存器对应起来的 回复

  • 底层改了,其实是做了两步,格式化字符串+串口输出。
    • 发布于2016-12-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 使用系统库函数printf()(), 需要重载输入, 输出函数int fputc(int ch, FILE *f);int fgetc(FILE *f).
    • 发布于2016-12-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个重定义就好哇

    #if 1
    #define printf(...)     vcom_Send(__VA_ARGS__)
    #else
    #define printf(...)
    #endif

    void vcom_Send( char *format, ... )
    {
      va_list args;
      uint16_t count = 0;

      va_start(args, format);
      count = vsprintf(&buff[0], format, args);
      Porting_Uart_Send(buff, count);
      
      va_end(args);
    }



    • 发布于2016-12-12
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

串口打印数据疑问?