我正在尝试在STM32F4-Discovery板上运行一些代码并运行(芯片:STM32F407VGT6)。
这tutorial解释了编译和链接Nucleo板所需的必要代码和步骤(芯片:STM32F401RE)。我试图将此过程转换为我的Discovery板,但是当我尝试链接目标文件时出现以下链接错误
error: system.o: Conflicting architecture profiles M/A
failed to merge target specific data of file system.o
error: main.o: Conflicting architecture profiles M/A
failed to merge target specific data of file main.o
error: startup_stm32f407xx.o: Conflicting architecture profiles M/A
failed to merge target specific data of file startup_stm32f407xx.o
我的项目结构如下
├── STM32Cube_FW_F4_V1.13.0
│ ├── Drivers/
│ ├── Projects/
│ └── Utilities/
├── stm32f4 (my project folder)
│ ├── main.c
│ ├── Makefile
│ ├── startup_stm32f407xx.s
│ └── system.c
这是我的 Makefile (STM32CubeF4 can be found here):
STM32Cube:=../STM32Cube_FW_F4_V1.13.0
#DEVICE:=STM32F07xG
DEVICE:=STM32F407xx
CC:=arm-none-eabi
CFLAGS:=-Wall -mcpu=cortex-m4 -mlittle-endian -mthumb
INC_PATH1:=$(STM32Cube)/Drivers/CMSIS/Device/ST/STM32F4xx/Include
INC_PATH2:=$(STM32Cube)/Drivers/CMSIS/Include
LD_SCRIPT:=$(STM32Cube)/Projects/STM32F4-Discovery/Templates/TrueSTUDIO/STM32F4-Discovery/STM32F407VG_FLASH.ld
all:
$(CC)-gcc $(CFLAGS) -I$(INC_PATH1) -I$(INC_PATH2) -D$(DEVICE) -Os -c system.c -o system.o
$(CC)-gcc $(CFLAGS) -I$(INC_PATH1) -I$(INC_PATH2) -D$(DEVICE) -Os -c main.c -o main.o
$(CC)-gcc $(CFLAGS) -I$(INC_PATH1) -I$(INC_PATH2) -D$(DEVICE) -Os -c startup_stm32f407xx.s -o startup_stm32f407xx.o
link: all
$(CC)-gcc $(CFLAGS) -D$(DEVICE) -T$(LD_SCRIPT) -Wl,--gc-sections system.o main.o startup_stm32f407xx.o -o main.elf
我从
复制了 startup_stm32f407xx.o$(STM32Cube)/Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc/startup_stm32f407xx.s
我已在 main.c 中将 BSRRL 和 BSSRH 更改为 BSRR system.c 中的 PWR_CR_VOS_1 至 PWR_CR_VOS 。
进行了这些更改,以便代码编译并且我的主板的头文件中不存在默认变量名。
我已经查看了两次教程并搜索了有关错误消息的信息,但无法解决此问题。
有人能告诉我我做错了什么或者指出了我正确的方向吗?