Windows下使用命令行直接编译STM32

1。需要准备的工具:

makefile运行工具:MinGW

gcc编译工具:arm-none-eabi-gcc

 

2。安装步骤

2.1 MinGW安装

MinGW是是将GCC编译器和GNU Binutils移植到Win32平台下的产物,包括一系列头文件(Win32API)、库和可执行文件。

下载地址:http://www.mingw.org/

MinGW安装:

2.1.1 下载后双击运行

2.1.2 安装后点击图标,进行GCC选择安装:

2.1.3 选择需要安装的组件

根据需要选择你的组件。右键选择“Mark for Installation”,之后选择"Installation -> Apply Changes”。等待下载完成。

2.1.4 安装好后,设备PTAH路径

需要设置 MinGW\bin;  MinGW\include;  MinGW\lib; 三个路径

2.1.5 设置完成后,在cmd窗口输入“gcc -v”看是否运行正常。

 

2.2 arm-gcc 安装

这个是用来将C程序编译成ARM的BIN文件的,因需使用到Makefile进行编译,所以需要安装上面的MinGW环境。

gcc-arm-none-eabi-5_4-2016q3-20160926-win32.exe

下载地址:https://launchpad.net/gcc-arm-embedded/+download

安装:直接双击进行安装即可,把arm-none-eabi-gcc里的bin文件夹添加到PATH环境变量,注销然后在命令行中输入arm-none-eabi-gcc -v如果显示了版本就说明安装成功。

 

2.3 stm32f4官方库

http://www.stmcu.org/document/list/index/category-150#524(搜索STSW-STM32065)

如果使用MDK进行开发,需要文件及markfile替换成官方库的

stlib/inc和stlib/src这两个文件夹是官方库文件夹里面的inc和src,分别对应.h和.c

tartup_stm32f40xx.S(后缀S要改成大写)是使用官方库里面TrueStudio的启动文件(注:不可以使用MDK的)

stm32f4xx_conf.h, stm32f4xx.h, system_stm32f4xx.c, system_stm32f4xx.h这几个文件到官方库相应地方复制过来就好了。

STM32F407ZET6_FLASH.ld是从官方库的project/STM32F4xx_stdPeriph_Templates/TrueSTUDIO/STM32F40_41xxx/STM32F417IG_FLASH.ld改名而来的,后面还会修改该文件,使得可以用在407ZET6上

根目录中的main.c,Makefile是自己创建的main。c写自己的程序,Makefile用于编译工程

stm32f4xx_it.c, stm32f4xx_it.h是从官方库中拿来负责写中断函数

 

2.4编写Makefile

编写Makefile

# 添加包含路径
vpath %.S stlib
vpath %.c stlib stlib/src 
vpath %.h stlib stlib/cminc stlib/inc
DEFS += -DUSE_STDPERIPH_DRIVER
INCS += -Istlib -Istlib/cminc -Istlib/inc

# 使用其他外设在这里添加
OBJS += main.o
OBJS += stlib/startup_stm32f40xx.o 
OBJS += stlib/system_stm32f4xx.o
OBJS += stlib/src/stm32f4xx_syscfg.o stlib/src/stm32f4xx_gpio.o

# 使用了编译优化和硬件浮点数
CFLAGS += -mcpu=cortex-m4 -mthumb -Wall 
CFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16
CFLAGS += -Os
CFLAGS += -ffunction-sections -fdata-sections

LFLAGS += -mcpu=cortex-m4 -mthumb
LFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16
LFLAGS += -Wl,--gc-sections 

# 最后生成的bin文件
all:blink.bin

clean:
    @rm -f $(OBJS) $(OBJ_FLASH) $(OBJ_SRAM)  
    @rm -f blink.bin blink.elf blinks.bin blinks.elf
blink.bin:blink.elf
    @arm-none-eabi-objcopy -O binary -S $< $@
blinks.bin:blinks.elf
    @arm-none-eabi-objcopy -O binary -S $< $@
blink.elf:$(OBJS) $(OBJ_FLASH)
    @arm-none-eabi-gcc $(LFLAGS) $^ -Tstlib/STM32F407ZET6_FLASH.ld -o $@
    @arm-none-eabi-size $@
burn:blink.bin
    @st-flash write $< 0x08000000
%.o:%.S
    @echo cc: $<
    @arm-none-eabi-gcc $(CFLAGS) -c $< -o $@
%.o:%.c
    @echo cc: $<
    @arm-none-eabi-gcc $(CFLAGS) $(DEFS) $(INCS) -c $< -o $@

 

2.5 调用:mingw32-make.exe 生成bin文件

2.6关于免安装程序的环境部署

其它MinGW和gcc-arm-none-eabi都可以直接将目录的程序提取出来,直接做成绿色版安装环境的,目录结构如下

批处理是这样写的

@echo off
setlocal enabledelayedexpansion 
set thispath=%cd%
set path==%path%;%thispath%\MinGW\bin;%thispath%\MinGW\include;%thispath%\MinGW\lib;%thispath%\ARM\bin;"
cd stm32f4project & mingw32-make.exe

直接运行批处理即可生成Bin文件

 

 

 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值