VScode报错显示
从图中画线处可以看出该报错处重定义(multi-definition在同一行)
原因分析
在VScode中编译stm32代码是通过自己编写的makefile文件(或者cubemx添加),其中C_source处如果多次添加同一C文件就会出现上述错误。
其中
$(wildcard Core/Src/*.c) \
代表就是将Core/Src/文件夹中所有文件夹包含编译,此时又在下面加入
Core/Src/main.c \
Core/Src/gpio.c \
Core/Src/freertos.c \
Core/Src/tim.c \
Core/Src/usart.c \
Core/Src/stm32f1xx_it.c \
Core/Src/stm32f1xx_hal_msp.c \
Core/Src/stm32f1xx_hal_timebase_tim.c \
Core/Src/system_stm32f1xx.c \
Core/Src/pwm.c \
导致重复包含,使得编译器重复编译,产生了 first defined here和multiple-definition在同一处报错。