用的是Contiki -msp430源码,移植到CC430 CCS环境的代码,
在增加printf 重定向后,报以下错误:
#10056 symbol "fputc" redefined: first defined in "./platform/MSP430/contiki-sky-main.obj";redefined in "D:\TI\ccsv6\tools
\compiler\msp430_15.12.3.LTS\lib\rts430x_lc_sd_eabi.lib<fputc.obj>" CC430+Contiki_test_1.2.1_ccs C/C++ Problem
添加的代码为:
int
fputc(int ch, register FILE* f)
{
uart0_writeb((uint8_t)ch);
return ch;
}
请帮忙分析一下,找了好久原因 还是一头雾水,就发现编译器会自己去编译stdio下面的一些函数
Ling Zhu2:
可以参考一下如下代码
/** User_debug.c**Created on: Mar 18, 2017*Author: a0222632*/#ifndef USER_DEBUG_C_ #define USER_DEBUG_C_#include "msp430.h" #include <stdio.h> #include "User_debug.h"#ifdef UART_PRINTF int fputc(int _c, register FILE *_fp); int fputs(const char *_ptr, register FILE *_fp); #endif#ifdef UART_PRINTF int fputc(int _c, register FILE *_fp) {while(!(UCA0IFG&UCTXIFG));UCA0TXBUF = (unsigned char) _c;return((unsigned char)_c); }int fputs(const char *_ptr, register FILE *_fp) {unsigned int i, len;len = strlen(_ptr);for(i=0 ; i<len ; i++){while(!(UCA0IFG&UCTXIFG));UCA0TXBUF = (unsigned char) _ptr[i];}return len; } #endif#endif /* USER_DEBUG_C_ */
ERIC_Jiang:
回复 Ling Zhu2:
juring 你好:
我现在是编译的时候,会把msp430_15.12.3.LTS\lib\rts430x_lc_sd_eabi.lib 库里fputc编进去,然后与自己写的fpuc冲突,但是找不到.lib中的fputc被编译进代码的原因???
Ling Zhu2:
回复 ERIC_Jiang:
ERIC_Jiang
juring 你好:
我现在是编译的时候,会把msp430_15.12.3.LTS\lib\rts430x_lc_sd_eabi.lib 库里fputc编进去,然后与自己写的fpuc冲突,但是找不到.lib中的fputc被编译进代码的原因???