当前位置: 首页 > news >正文

STM32 Makefile

#使用斜杠,而不是反斜杠 #环境:windows, ARM gcc, gnu make, stm32cube library, stm32cube programmer#工具链 PREFIX = arm-none-eabi- CC = $(PREFIX)gcc AS = $(PREFIX)gcc -x assembler-with-cpp CP = $(PREFIX)objcopy SZ = $(PREFIX)size BIN = $(CP) -O binary -S# STM32的Cube库的位置,HAL驱动的位置 CUBE = C:/*/STM32CubeF3 HAL = $(CUBE)/Drivers/stm32f3xx_HAL_Driver#构建目标,构建结果存到build目录下 TARGET = test BUILD = build#指定MCU的类型 CPU = -mcpu=cortex-m4 FPU = -mfpu=fpv4-sp-d16 FLT = -mfloat-abi=hard MCU = $(CPU) -mthumb $(FPU) $(FLT)#需要编译的源代码文件 C_SRC = $(HAL)/Src/stm32f3xx_hal.c \ $(HAL)/Src/stm32f3xx_hal_*.c \ system_stm32f3xx.c stm32f3xx_it.c main.c syscall.c#启动文件 ASM_SRC = startup_stm32f334x8.s#预定义符号 C_DEFS = -DUSE_HAL_DRIVER -DSTM32F334x8#头文件搜索位置 INCLUDE = -I. \ -I$(CUBE)/Drivers/CMSIS/Core/Include \ -I$(CUBE)/Drivers/CMSIS/Include \ -I$(CUBE)/Drivers/CMSIS/Device/ST/stm32f3xx/Include \ -I$(HAL)/Inc#编译标志 OPT = -Og ASFLAGS = $(MCU) $(OPT) -Wall -fdata-sections -ffunction-sections #各自成节 CFLAGS = $(MCU) $(C_DEFS) $(INCLUDE) $(OPT) -Wall -fdata-sections -ffunction-sections #各自成节 CFLAGS += -g -gdwarf-2 #调试符号 CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)" #生成依赖#链接脚本,标准C库,数学库,nosys库 LDSCRIPT = STM32F334XX_FLASH.ld LIBS = -lc -lm -lnosys LDFLAGS = $(MCU) -specs=nano.specs -T$(LDSCRIPT) $(LIBS) -Wl,-Map=$(BUILD)/$(TARGET).map,--cref -Wl,--gc-sections#生成ELF和BIN文件 all: $(BUILD)/$(TARGET).elf $(BUILD)/$(TARGET).bin$(SZ) $<#把C_SRC的后缀改成.o,然后去掉目录名只取文件名,再加上build目录路径。就是说,把生成的.o都放在build里面 OBJECTS = $(addprefix $(BUILD)/,$(notdir $(C_SRC:.c=.o))) vpath %.c $(sort $(dir $(C_SRC))) #将目录排序去重,加入到vpath OBJECTS += $(addprefix $(BUILD)/,$(notdir $(ASM_SRC:.s=.o))) #汇编文件同理 vpath %.s $(sort $(dir $(ASM_SRC)))$(BUILD)/%.o: %.c Makefile | $(BUILD) $(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD)/$(notdir $(<:.c=.lst)) $< -o $@ #生成lst,至今还没弄明白$(BUILD)/%.o: %.s Makefile | $(BUILD)$(AS) -c $(CFLAGS) $< -o $@$(BUILD)/$(TARGET).elf: $(OBJECTS) Makefile$(CC) $(OBJECTS) $(LDFLAGS) -o $@$(BUILD)/%.bin: $(BUILD)/%.elf | $(BUILD)$(BIN) $< $@$(BUILD):mkdir $@ clean:RD /S /Q $(BUILD) #RD就是RMDIR,windows上的rm命令-include $(wildcard $(BUILD)/*.d)#命令行下载运行 PROG = C:/*/STM32CubeProgrammer/bin/STM32_Programmer_CLI.exe flash: $(BUILD)/$(TARGET).bin$(PROG) -c port=SWD freq=4000 -e all -w $< 0x08000000 -v #把BIN文件写入到0x08000000位置 run: flash$(PROG) -c port=SWD freq=4000 -s 0x08000000 #从这里开始运行
http://www.jsqmd.com/news/199448/

相关文章:

  • JVMS:Windows平台终极JDK版本管理解决方案
  • EasyOCR预训练模型完整配置方案:解决网络受限环境的终极指南
  • 2025年AI降重工具实测报告:7大免费平台助你高效降低AIGC重复率。
  • Path of Building PoE2完全掌握指南:从零搭建完美角色构建
  • 航天任务地面播报:打造具有科技感的专属空间站声线
  • Steam成就管理器终极指南:轻松掌控你的游戏成就
  • Dify描述生成优化实战指南(从入门到精通)
  • Flowframes视频插帧工具完整安装配置指南
  • 3步搞定学术论文参考文献:效率提升10倍的智能工具指南
  • 2026年注塑搬运柔性夹爪选型指南:解锁智能制造柔性抓取新方案_ - 品牌2025
  • RAG系统中的“过度检索”问题:探讨引入外部知识可能带来的挑战与解决方案!
  • 2026年柔性夹爪选型指南:月饼机械手品牌推荐与行业解决方案 - 品牌2025
  • 3DS FBI Link Mac版终极指南:5分钟快速安装游戏教程
  • SubFinder终极字幕搜索工具:一键解决所有字幕匹配难题
  • Docker-Calibre-Web云端图书馆:零基础打造个人数字书房的终极指南
  • 边缘设备部署挑战:树莓派运行IndexTTS 2.0性能实测
  • 2026年 电加热器厂家权威推荐榜:防爆/导热油/氮气/空气/蒸汽/灰斗/板式/法兰/履带/风道/脱硝/油罐/重油/防腐电加热器,专业定制与高效节能解决方案 - 品牌企业推荐师(官方)
  • Locale Remulator游戏语言环境切换完全指南
  • 局域网通讯新纪元:3步构建高效内部沟通系统
  • 强烈安利8个AI论文工具,自考毕业论文轻松搞定!
  • 秀动抢票神器终极指南:告别手速焦虑,轻松锁定心仪演出
  • 霞鹜文楷:2025年最值得下载的开源中文字体深度解析
  • 2026最新中药护肤代加工生产厂家top6推荐榜!服务于广东广州等地优质企业及服务商解析/选择指南 - 全局中转站
  • 2026 柔性智造选型指南:靠谱机械手柔性夹爪厂家推荐 - 品牌2025
  • 5步构建你的专属小说库:阅读APP书源完全配置手册
  • 去中心化存储方案:把IndexTTS 2.0音频存进IPFS网络
  • 霞鹜文楷:一款优雅实用的开源中文字体
  • 2026 年车灯机械手供应商评估:从质量到服务全维度参考 - 品牌2025
  • BlockTheSpot故障排除完全指南:从安装到修复的完整解决方案
  • 2025年大模型技术核心突破深度解析:RLVR、GRPO、推理缩放等进展,干货!