单片机是TMS570LS3137。目的是利用printf将调试信息输出到SCI串口。
fputs已经重定义。引用头文件stdio.h。CCS工程中,“Enable CIO function use”已勾选。“heap size”已设为0x800。
现在的现象是:字符串能够正常输出,但printf后面携带的参数仍然打印在CCS console窗口中。如"printf("Hello World %d!\r\n",i);",SCI串口中能正常输出“Hello World !”,但"%d"对应变量i的数值在CCS console窗口输出。如果去除fputs重定义,则数据可以在console窗口完整输出。
同样的程序,在KEIL工程中,printf的数据能够完整输出到SCI串口,因此认为可以排除fputs重定义程序问题。
请问,CCS是否还需要其它配置,才能使printf的数据完全从SCI串口输出?
gaoyang9992006:
在虚拟窗口是不完整的,在硬件端口完整不?
Maxr:
回复 gaoyang9992006:
如果不重定向,那么虚拟的控制台窗口的输出信息是完整的。不过,由于仿真器速度太慢,不利于调试。
重定向后,即重新定义fputs后,SCI串口这个硬件窗口,能够输出printf第一个参数中的字符串部分,但后面的多参数(如%s,%d对应的参数)部分,被输出到虚拟的控制台窗口了。
gaoyang9992006:
回复 Maxr:
不是很清楚这一块的问题啊,如果不需要太复杂的,你可以直接按照自己的需求写个输出函数用。用系统带的那个他们考虑的全面,因此效率就低了。