在CCS6中编译时,我遇到了以下错误:
#10056 symbol "__TI_int47" redefined(由德州仪器公司使用Composer为MSP430编译)
在声明中断服务例程时会发生这种情况,例如:
#pragma vector=PORT1_VECTOR
__interrupt void P1input_ISR ()
{
P1IFG &= ~BIT0; // mark interrupt as "handled"
}是什么原因产生了这些匿名的符号?
如何跟踪生成符号的代码?
发布于 2014-09-28 05:56:54
符号__TI_int47可能是您的ISR函数的某种别名。它只是一个内部实现细节,用于说明编译器的一个部分如何将您定义的is的信息传递给另一个部分。您发布的语用可能会导致定义它。我敢打赌,PORT1_VECTOR被处理器特定的头文件定义为47。
听起来,您的项目中有多个代码段定义相同的ISR,因此您需要从另一个ISR中删除其中一个或调用其中一个。
发布于 2014-09-28 05:59:20
PORT1_vector是47岁。CCS和IAR中的#pragma vector 47将导致为中断47安装以下功能。显然,它通过定义一个名为__TI_int47的符号来实现这一点,链接器稍后将使用该符号填充中断向量表。出现此错误是因为为同一个向量定义了两个不同的函数,这是不可能的。
https://stackoverflow.com/questions/26082058
复制相似问题