【STM8S】IAR外部中断报错Error[Li006]: duplicate definitions for "_interrupt_6";
这个错误是由于在两个目标文件(main.o)中重复定义了中断处理函数"_interrupt_6"导致的。
在编译过程中,IAR在每个函数定义中生成一个唯一的标识符(symbol),并将其保存在目标文件中。如果出现多个具有相同名称和签名的函数定义,则会导致重复定义错误。
可能的原因是,在项目中存在多个源文件,这些源文件都包含了对中断处理函数"_interrupt_6"的定义。这可能是由于误导或代码错误导致的。
解决此问题的一种方法是检查项目中的所有源文件,确保只有一个文件中定义了"_interrupt_6"函数,而其他文件没有重复定义。如果定义了多个相同名称的中断处理函数,只保留一个定义,删除其他重复定义。
另外,请确保中断处理函数的命名与中断向量表中对应中断的命名完全一致。如果中断向量表中的中断名称与函数定义的名称不匹配,也会导致重复定义错误。
最后,重新编译项目并确保没有其他重复定义错误出现。
在解决问题时,建议查看详细的编译器输出日志,以获取更多关于重复定义的具体信息,如重复定义的位置和其他相关错误提示,以便更好地排查和解决问题。
找到对应的服务函数,直接屏蔽库文件里边的
这样自己就可以找地方t贴上自己写的中断服务函数: