1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
啥都不说了,直接上代码,注释相当详细了。
#STM32 makefile template # 生成的文件名<项目名> PROJECT = stm32_Mini_Led # 定义文件格式和文件名 TARGET := $(PROJECT) TARGET_ELF := $(TARGET).elf TARGET_BIN := $(TARGET).bin TARGET_HEX := $(TARGET).hex OBJCPFLAGS_ELF_TO_BIN = -Obinary OBJCPFLAGS_ELF_TO_HEX = -Oihex OBJCPFLAGS_BIN_TO_HEX = -Ibinary -Oihex # 定义路径 TOP_DIR = . SCRIPT_DIR := $(TOP_DIR)/scripts STARTUP_DIR := $(TOP_DIR)/third_party/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup INC_DIR := -I $(TOP_DIR)/src -I $(TOP_DIR)/src/Driver -I $(TOP_DIR)/src/EDP -I $(TOP_DIR)/src/Network # 设置shell环境变量 #export LD_LIBRARY_PATH = $LD_LIBRARY_PATH:/Users/ch-yanghl/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/ # 设置ld链接脚本文件 LDSCRIPT := $(SCRIPT_DIR)/stm32_flash.ld # 定义编译工具 CC = arm-none-eabi-gcc AS = arm-none-eabi-as LD = arm-none-eabi-ld AR = arm-none-eabi-ar OBJCP = arm-none-eabi-objcopy # 定义编译标志 CCFLAGS += -Wall -mcpu=cortex-m3 -mthumb -g -mfloat-abi=soft -march=armv7-m ASFLAGS += -Wall -mcpu=cortex-m3 -mthumb LDFLAGS += -T $(LDSCRIPT) #-A armv7-m LDFLAGS += -L /Users/ch-yanghl/gcc-arm-none-eabi/lib/gcc/arm-none-eabi/5.4.1 LDFLAGS += -L /Users/ch-yanghl/gcc-arm-none-eabi/arm-none-eabi/lib/thumb # 要链接的静态库 #LDLIBS += /Users/ch-yanghl/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libc.a #LDLIBS += /Users/ch-yanghl/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libg.a #LDLIBS += /Users/ch-yanghl/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libm.a #LDLIBS += /Users/ch-yanghl/gcc-arm-none-eabi/lib/gcc/arm-none-eabi/5.4.1/libgcc.a #LDLIBS += /Users/ch-yanghl/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libnosys.a # .c文件中的头文件引用查找路径 CCFLAGS += $(INC_DIR) # .s文件的flags #ASFLAGS += # .c文件编译时定义宏 CCFLAGS += -D STM32F10X_MD -D USE_STDPERIPH_DRIVER # 添加启动文件 #SOURCE += $(SCRIPT_DIR)/startup_stm32f10x_md.c SOURCE_ASM += $(STARTUP_DIR)/gcc_ride7/startup_stm32f10x_md.s # 展开工作 子目录中的inc文件(inc文件中添加需要编译链接的.c,.s等文件) -include $(TOP_DIR)/src/make.inc -include $(TOP_DIR)/third_party/make.inc # 替换文件后缀 C_OBJS := $(SOURCE:%.c=%.o) ASM_OBJS := $(SOURCE_ASM:%.s=%.o) # 编译命令的定义 COMPILE = $(CC) $(CCFLAGS) -c $< -o $@ ASSEMBLE = $(AS) $(ASFLAGS) -c $< -o $@ LINK = $(LD) $+ $(LDFLAGS) $(LDLIBS) -o $@ ELF_TO_BIN = $(OBJCP) $(OBJCPFLAGS_ELF_TO_BIN) $< $@ BIN_TO_HEX = $(OBJCP) $(OBJCPFLAGS_BIN_TO_HEX) $< $@ # 定义伪目标 .PHONY: all clean printf # 定义规则 all: $(TARGET_HEX) @echo "build done" $(TARGET_HEX): $(TARGET_BIN) $(BIN_TO_HEX) $(TARGET_BIN): $(TARGET_ELF) $(ELF_TO_BIN) $(TARGET_ELF): $(C_OBJS) $(ASM_OBJS) $(LINK) $(C_OBJS):%.o:%.c $(COMPILE) $(ASM_OBJS):%.o:%.s $(ASSEMBLE) printf: @echo $(ASM_OBJS) @echo $(ASSEMBLE) # 清理项 clean: rm -f $(TARGET_HEX) rm -f $(TARGET_BIN) rm -f $(TARGET_ELF) rm -f $(C_OBJS) $(ASM_OBJS) @echo "clean done" 这个一个LED流水灯的STM32工程,包含STM32库v3.5.0版本,下载地址 再详细说一下注释中没有的可能有疑问的地方: # 要链接的静态库 #LDLIBS += /Users/ch-yanghl/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libc.a #LDLIBS += /Users/ch-yanghl/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libg.a #LDLIBS += /Users/ch-yanghl/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libm.a #LDLIBS += /Users/ch-yanghl/gcc-arm-none-eabi/lib/gcc/arm-none-eabi/5.4.1/libgcc.a #LDLIBS += /Users/ch-yanghl/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libnosys.a -这一块为什么要注释:因为文中使用了 # 设置ld链接脚本文件 LDSCRIPT := $(SCRIPT_DIR)/stm32_flash.ld /*stm32_flash.ld文件中最后部分内容*/ /DISCARD/ : { libc.a ( * ) libm.a ( * ) libg.a ( * ) libgcc.a ( * ) } 这个ld脚本文件,该文件中已经包含了这些库。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1777 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1080 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1678 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
731浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
595浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
554浏览 3评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 03:52 , Processed in 1.365865 second(s), Total 46, Slave 40 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号