KEIL软件中编译时出现的Error L6200E: symbol multiply defined ...的解决方法

问题描述:因为要使用CAN进行数据传输,因此在主程序“test.c”中采用#include “can.h”,调用“can.h”中的函数和变量。结果编译后出现许多Error L6200E: symbol xxx multiply defined  ...。

原因:因为在“can.h”中定义了许多变量,“can.c”文件中采用#include “can.h”,调用“can.h”中的变量;在主函数"test.c"中也采用#include “can.h”,调用“can.h”中的变量,导致“can.h”中的变量被重复定义。

解决方法:首先,不应该在“can.h”中定义“can.c”中使用的变量,应该直接在“can.c”中定义所需的变量。然后再主程序"test.c"中将所调用“can.c”中的变量定义为 extern,例如 external ((u32)  count) ; ,问题得到解决。

你可能感兴趣的:(电机控制,stm32)