Error: L6200E: Symbol Delay_us multiply defined (by bsp_i2c1.o and bsp.o).
时间: 2024-05-28 14:13:11 浏览: 6
这个错误表示 `Delay_us` 符号被 `bsp_i2c1.o` 和 `bsp.o` 文件重复定义了。这通常是因为你在多个源文件中定义了同名的函数或变量。
要解决这个问题,你需要检查你的代码中所有使用 `Delay_us` 的地方,确保只有一个地方定义了它。你可以尝试将 `Delay_us` 的定义放在头文件中,并在需要使用它的源文件中包含该头文件来避免重复定义的问题。如果你已经这样做了,你可能需要检查是否有多个头文件包含同一个定义,或者是否有多个源文件包含同一个头文件。
相关问题
..\..\Output\zeng.axf: Error: L6200E: Symbol Delay_us multiply defined (by delay.o and bsp_systick.o).
这个错误是由于在编译过程中,两个不同的源文件都定义了同一个符号“Delay_us”,导致链接器无法确定使用哪个定义。解决这个问题的方法是需要在其中一个源文件中将该符号定义为static,这样就只能在该源文件中使用该符号,而不会与其他源文件中的定义冲突了。
解决方法:
在其中一个源文件中将该符号定义为static,例如在delay.c文件中将Delay_us函数定义为static即可。
..\OBJ\KEY.axf: Error: L6200E: Symbol delay_ms multiply defined (by delay.o and main.o).
这个错误提示表明在链接 `KEY.axf` 文件时,`delay_ms` 符号被 `delay.o` 和 `main.o` 两个目标文件都定义了一次,导致符号重定义错误。
解决这个问题的方法有两种:
1. 将函数定义改为 `static inline` 或 `static`,这样编译器就能够在编译时将函数的定义内联到调用处,而不是在链接时将其作为独立的目标文件。
2. 将函数定义放到单独的源文件中,只在需要使用该函数的源文件中包含该函数的头文件。这样每个目标文件只会包含一次函数定义,避免了符号重定义错误。