导致CCS6生成符号的原因是" __ TI_int47"?

时间:2014-09-28 05:48:40

标签: msp430 code-composer

在CCS6中编译时,我遇到了这个错误:

#10056 symbol "__TI_int47" redefined

(使用德州仪器的Code Composer Studio编译MSP430)

在声明中断服务例程时会发生这种情况,例如:

#pragma vector=PORT1_VECTOR
__interrupt void P1input_ISR ()
{
    P1IFG &= ~BIT0; // mark interrupt as "handled"
}

是什么导致生成这些匿名符号?

如何跟踪生成符号的代码?

2 个答案:

答案 0 :(得分:3)

PORT1_vector为47. #pragma vector 47在CCS和IAR中导致为中断47安装以下函数。显然,它通过定义名为__TI_int47的符号来实现链接器稍后将用于填充中断向量表。之所以出现错误是因为为同一个向量定义了两个不同的函数,这是不可能的。

答案 1 :(得分:1)

符号__TI_int47可能是您的ISR功能的某种别名。它只是一个内部实现细节,说明编译器的一部分如何与另一部分通信有关您定义的ISR的信息。您发布的pragma可能会导致它被定义。我敢打赌,PORT1_VECTOR被特定于处理器的头文件定义为47。

听起来你的项目中有多段代码定义了相同的ISR,所以你需要删除一个或者从另一个中调用一个。