Part Number:TMS320F2800137Other Parts Discussed in Thread:DAC128S085, SFRA, C2000WARE
问题1:如果把一下代码添加到sci.c,发现sci.c不参与编译。
int fputc(int _c, FILE *_fp)
{
while (SCI_getTxFIFOStatus(SCIA_BASE) == SCI_FIFO_TX16);
HWREGH(SCIA_BASE + SCI_O_TXBUF) = _c;
return _c;
}
int putc(int _x, FILE *_fp)
{
while (SCI_getTxFIFOStatus(SCIA_BASE) == SCI_FIFO_TX16);
HWREGH(SCIA_BASE + SCI_O_TXBUF) = _x;
return _x;
}
int putchar(int _x)
{
while (SCI_getTxFIFOStatus(SCIA_BASE) == SCI_FIFO_TX16);
HWREGH(SCIA_BASE + SCI_O_TXBUF) = _x;
return _x;
}
int fputs(const char * __restrict _ptr, FILE * __restrict _fp)
{
unsigned int i, len;
len = strlen(_ptr);
for(i=0 ; i<len ; i++)
{
while (SCI_getTxFIFOStatus(SCIA_BASE) == SCI_FIFO_TX16);
HWREGH(SCIA_BASE + SCI_O_TXBUF) = (uint8_t) _ptr[i];
}
return len;
}
问题2:如果把代码放到sci.h,编译报如下错误:
<Linking>
error #10056: symbol "putc" redefined: first defined in "./sys_main.obj"; redefined in "./libraries/control/mtpa/mtpa.obj"
error #10056: symbol "fputs" redefined: first defined in "./sys_main.obj"; redefined in "./libraries/control/mtpa/mtpa.obj"
error #10056: symbol "fputc" redefined: first defined in "./sys_main.obj"; redefined in "./libraries/control/mtpa/mtpa.obj"
error #10056: symbol "putchar" redefined: first defined in "./sys_main.obj"; redefined in "./libraries/control/mtpa/mtpa.obj"
error #10056: symbol "putc" redefined: first defined in "./sys_main.obj"; redefined in "./libraries/dacs/dac128s085/dac128s085.obj"
error #10056: symbol "fputs" redefined: first defined in "./sys_main.obj"; redefined in "./libraries/dacs/dac128s085/dac128s085.obj"
error #10056: symbol "fputc" redefined: first defined in "./sys_main.obj"; redefined in "./libraries/dacs/dac128s085/dac128s085.obj"
error #10056: symbol "putchar" redefined: first defined in "./sys_main.obj"; redefined in "./libraries/dacs/dac128s085/dac128s085.obj"
error #10056: symbol "putc" redefined: first defined in "./sys_main.obj"; redefined in "./libraries/sfra/sfra_gui.obj"
error #10056: symbol "fputs" redefined: first defined in "./sys_main.obj"; redefined in "./libraries/sfra/sfra_gui.obj"
error #10056: symbol "fputc" redefined: first defined in "./sys_main.obj"; redefined in "./libraries/sfra/sfra_gui.obj"
error #10056: symbol "putchar" redefined: first defined in "./sys_main.obj"; redefined in "./libraries/sfra/sfra_gui.obj"
error #10056: symbol "putc" redefined: first defined in "./sys_main.obj"; redefined in "./libraries/sfra/sfra_gui_scicomms_driverlib.obj"
error #10056: symbol "fputs" redefined: first defined in "./sys_main.obj"; redefined in "./libraries/sfra/sfra_gui_scicomms_driverlib.obj"
error #10056: symbol "fputc" redefined: first defined in "./sys_main.obj"; redefined in "./libraries/sfra/sfra_gui_scicomms_driverlib.obj"
error #10056: symbol "putchar" redefined: first defined in "./sys_main.obj"; redefined in "./libraries/sfra/sfra_gui_scicomms_driverlib.obj"
error #10056: symbol "putc" redefined: first defined in "./sys_main.obj"; redefined in "./src_board/hal.obj"
error #10056: symbol "fputs" redefined: first defined in "./sys_main.obj"; redefined in "./src_board/hal.obj"
error #10056: symbol "fputc" redefined: first defined in "./sys_main.obj"; redefined in "./src_board/hal.obj"
error #10056: symbol "putchar" redefined: first defined in "./sys_main.obj"; redefined in "./src_board/hal.obj"
error #10056: symbol "putc" redefined: first defined in "./sys_main.obj"; redefined in "./src_board/user_mtr1.obj"
error #10056: symbol "fputs" redefined: first defined in "./sys_main.obj"; redefined in "./src_board/user_mtr1.obj"
error #10056: symbol "fputc" redefined: first defined in "./sys_main.obj"; redefined in "./src_board/user_mtr1.obj"
error #10056: symbol "putchar" redefined: first defined in "./sys_main.obj"; redefined in "./src_board/user_mtr1.obj"
error #10056: symbol "putc" redefined: first defined in "./sys_main.obj"; redefined in "./src_control/communication.obj"
error #10056: symbol "fputs" redefined: first defined in "./sys_main.obj"; redefined in "./src_control/communication.obj"
error #10056: symbol "fputc" redefined: first defined in "./sys_main.obj"; redefined in "./src_control/communication.obj"
error #10056: symbol "putchar" redefined: first defined in "./sys_main.obj"; redefined in "./src_control/communication.obj"
error #10056: symbol "putc" redefined: first defined in "./sys_main.obj"; redefined in "./src_control/motor1_drive.obj"
error #10056: symbol "fputs" redefined: first defined in "./sys_main.obj"; redefined in "./src_control/motor1_drive.obj"
error #10056: symbol "fputc" redefined: first defined in "./sys_main.obj"; redefined in "./src_control/motor1_drive.obj"
error #10056: symbol "putchar" redefined: first defined in "./sys_main.obj"; redefined in "./src_control/motor1_drive.obj"
error #10056: symbol "putc" redefined: first defined in "./sys_main.obj"; redefined in "./src_control/motor_common.obj"
error #10056: symbol "fputs" redefined: first defined in "./sys_main.obj"; redefined in "./src_control/motor_common.obj"
error #10056: symbol "fputc" redefined: first defined in "./sys_main.obj"; redefined in "./src_control/motor_common.obj"
error #10056: symbol "putchar" redefined: first defined in "./sys_main.obj"; redefined in "./src_control/motor_common.obj"
error #10056: symbol "putc" redefined: first defined in "./sys_main.obj"; redefined in "./src_device/device.obj"
error #10056: symbol "fputs" redefined: first defined in "./sys_main.obj"; redefined in "./src_device/device.obj"
error #10056: symbol "fputc" redefined: first defined in "./sys_main.obj"; redefined in "./src_device/device.obj"
error #10056: symbol "putchar" redefined: first defined in "./sys_main.obj"; redefined in "./src_device/device.obj"
error #10056: symbol "fputs" redefined: first defined in "./sys_main.obj"; redefined in "C:\ti\ccs1230\ccs\tools\compiler\ti-cgt-c2000_22.6.0.LTS\lib\rts2800_fpu32_eabi.lib<fputs.c.obj>"
error #10010: errors encountered during linking; "universal_motorcontrol_lab_f280013x.out" not built
>> Compilation failure
makefile:240: recipe for target 'universal_motorcontrol_lab_f280013x.out' failed
gmake[1]: *** [universal_motorcontrol_lab_f280013x.out] Error 1
makefile:236: recipe for target 'all' failed
gmake: *** [all] Error 2
liang zuxing:
不管用哪种方式,只要在C2000Ware_MotorControl_SDK_4_02_01_00\solutions\universal_motorcontrol_lab工程上实现串口日志输出就行
,
Ben Qin:
你好,可以参考下这篇帖子:
e2echina.ti.com/…/tms320f28034-printf
,
liang zuxing:
重定向代码如下:
int putchar(int _x){ /*while (SCI_getTxFIFOStatus(SCIA_BASE) == SCI_FIFO_TX16); HWREGH(SCIA_BASE + SCI_O_TXBUF) = _x; return _x;*/ SCI_writeCharBlockingNonFIFO(SCIA_BASE,_x); return _x;}
int putc(int _x, FILE *_fp){ /*while (SCI_getTxFIFOStatus(SCIA_BASE) == SCI_FIFO_TX16); HWREGH(SCIA_BASE + SCI_O_TXBUF) = _x; return _x;*/ SCI_writeCharBlockingNonFIFO(SCIA_BASE,_x); return _x;}
int fputc(int _c, FILE *_fp){ //while (SCI_getTxFIFOStatus(SCIA_BASE) == SCI_FIFO_TX16); // HWREGH(SCIA_BASE + SCI_O_TXBUF) = _c; SCI_writeCharBlockingNonFIFO(SCIA_BASE,_c); return _c;}
int fputs(const char * __restrict _ptr, FILE * __restrict _fp){ unsigned int i, len; len = strlen(_ptr); for(i=0 ; i<len ; i++) { //while (SCI_getTxFIFOStatus(SCIA_BASE) == SCI_FIFO_TX16); //HWREGH(SCIA_BASE + SCI_O_TXBUF) = (int) _ptr[i]; SCI_writeCharBlockingNonFIFO(SCIA_BASE,_ptr[i]); } return len;}
这个代码用在开发板的DEMO工程printf可以正常输出,用在C2000Ware_MotorControl_SDK_4_02_01_00\solutions\universal_motorcontrol_lab\f280013x
print没有输出,但是直接用重定向的putchar输出单字符是正常。请帮忙分析一下
,
Ben Qin:
抱歉我们并没有针对此的官方文档,我只能提供一些资料供您参考。
查看下下面这个链接:
e2echina.ti.com/…/tms320f28035-c2000-printf
TI中文支持网


