我在STM32CubeIDE中导入了一个带有选项“MakefileProjectwith现有代码”的项目。我在不使用任何IDE的情况下创建了这个项目,所以我不得不编写自己的makefile。
CC = arm-none-eabi-gcc -c
LD = arm-none-eabi-gcc
LIBNAME_OPENCM3 = opencm3_stm32f1
OPT = -Os
DEFS += -DSTM32F1
DIR_OPENCM3 = ./libopencm3
DIR_INC = ./inc
DIR_OBJ = ./obj
DEBUG = -ggdb3
LDSCRIPT = stm32f1.ld
DIR_FLAGS = -I$(DIR_INC)
ARCH_FLAGS = -mthumb -mcpu=cortex-m3
LDFLAGS += --static -nostartfiles
LDFLAGS += -T$(LDSCRIPT)
LDFLAGS += $(ARCH_FLAGS) $(DEBUG)
LDFLAGS += -Wl,-Map=$(*).map -Wl,--cref
LDFLAGS += -Wl,--gc-sections
ifeq ($(V),99)
LDFLAGS += -Wl,--print-gc-sections
endif
LDFLAGS += -u _printf_float
LDFLAGS += -L$(DIR_OPENCM3)/lib
LDLIBS += -l$(LIBNAME_OPENCM3)
LDLIBS += -Wl,--start-group -lc -lgcc -lnosys -Wl,--end-group
CFLAGS += $(OPT) $(DEBUG) $(ARCH_FLAGS)
CFLAGS += -Wextra -Wshadow -Wimplicit-function-declaration
CFLAGS += -Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes
CFLAGS += -fno-common -ffunction-sections -fdata-sections
CFLAGS += -std=c11
DEFS += -I$(DIR_OPENCM3)/include
PREPFLAGS = -MD -Wall -Wundef $(DEFS)
OBJS = $(DIR_OBJ)/main.o \
$(DIR_OBJ)/bmp180.o
main.elf : $(OBJS) $(LDSCRIPT)
$(LD) $(LDFLAGS) $(OBJS) $(LDLIBS) -o main.elf
$(DIR_OBJ)/%.o : %.c
mkdir -p $(DIR_OBJ)
$(CC) $(CFLAGS) $(DIR_FLAGS) $(PREPFLAGS) $< -o $@
clean :
rm -rf $(DIR_OBJ) *.elf *.map *.d
all :
make该项目已成功编译并正在运行,但当我开始调试时,这个IDE没有显示SFR寄存器。窗户是空的。

我创建了一个不同的项目,这次使用IDE,它向我展示了寄存器。

我想这和我的makefile有关。是否有一个额外的标志,我需要添加,或为什么会发生这种情况?
发布于 2022-08-30 13:11:32
过了一段时间后,我又遇到了同样的问题(在Win10上使用Win10 1.9.0 )。
当我将一个现有的makefile项目导入IDE时,所有这些都是生成的.能够在IDE中进行调试(使用STLINK),但是SFR视图奇怪地是空的.
我通过玩"Project“设置解决了问题,尽管IDE本身发出了威胁消息(可惜:S )
导入后,该项目配置了三个性质: ccnature、ScannerConfigNature
哒!
项目属性(最后!)开始显示CMSIS-SVD设置选项卡,该选项卡允许我指向描述所使用的MCU的.SVD设备文件。
我指定了这个字符串(复制自一个完全在IDE中生成的项目):
platform:/plugin/com.st.stm32cube.ide.mcu.productdb.debug/resources/cmsis/STMicroelectronics_CMSIS_SVD/STM32xxxx.svd
(用微控制器替换xxxx,在STM32CubeIDE安装插件文件夹中搜索*.svd)
我希望这能减轻人的头撞墙寻找解决办法的痛苦。
https://stackoverflow.com/questions/73347992
复制相似问题