打印

CCS Printf的问题

[复制链接]
744|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lomo1316|  楼主 | 2020-10-14 10:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
lomo1316|  楼主 | 2020-10-15 16:27 | 只看该作者
经过2天不断的尝试,问题解决了。
一定要重定向fputc,putc,putchar,fputs,我之前没有重定向fputs,就导致了输出数据不完整的问题
#include <stdio.h>

#include <string.h>





int fputc(int _c, register FILE *_fp)

{

        while (SciaRegs.SCICTL2.bit.TXEMPTY == 0);

        SciaRegs.SCITXBUF = _c;

        return _c;

}

int putc(int _c, register FILE *_fp)

{

        while (SciaRegs.SCICTL2.bit.TXEMPTY == 0);

        SciaRegs.SCITXBUF = _c;

        return _c;

}



int putchar(int data)

{

  while (SciaRegs.SCICTL2.bit.TXRDY == 0);

  SciaRegs.SCITXBUF=data;

  return data;

}



int fputs(const char *_ptr, register FILE *_fp)

{

  unsigned int i, len;



  len = strlen(_ptr);



  for(i=0 ; i<len ; i++)

  {

        while (SciaRegs.SCICTL2.bit.TXEMPTY == 0);

        SciaRegs.SCITXBUF = (uint8_t) _ptr[i];

  }

  return len;

}

//之前没有重定向fputs函数,造成了问题,添加了之后,就OK了


使用特权

评论回复
板凳
蒋博1026| | 2020-10-18 12:32 | 只看该作者
fputc() 把 字符 c 转换到 unsigned char 类型, 然后 从 stream 流 输出.
fputs() 把 字符串 s 从 stream 流 输出, 但是 不输出 结尾处的 '\0'.

使用特权

评论回复
地板
蒋博1026| | 2020-10-18 12:32 | 只看该作者
putc() 等于 fputc() , 只是 它 可能 以 宏 的 形式 实现, 并 多次 访问 stream 流.
putchar(c); 等于 putc(c,stdout).
puts() 从 stdout 输出 字符串 s 和 一个 换行符 (newline).

使用特权

评论回复
5
蒋博1026| | 2020-10-18 12:33 | 只看该作者
如果 操作 成功, fputc(), putc() 和 putchar() 返回 把 字符 从 unsigned char 类型 转换来的 int 值, 否则 返回 EOF .

使用特权

评论回复
6
蒋博1026| | 2020-10-18 12:33 | 只看该作者
同时,还有 如果 操作 成功, puts() 和 fputs() 返回 大于等于零的值, 否则 返回 EOF .

使用特权

评论回复
7
蒋博1026| | 2020-10-18 12:34 | 只看该作者
同时感谢楼主分享自己遇到的问题,为其他人提供了好的资源,感谢楼主分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

93

帖子

3

粉丝