Windows下使⽤命令⾏直接编译STM32
1。需要准备的⼯具:
makefile运⾏⼯具:MinGW
gcc编译⼯具:arm-none-eabi-gcc
2。安装步骤
2.1 MinGW安装
MinGW是是将GCC编译器和GNU Binutils移植到Win32平台下的产物,包括⼀系列头⽂件(Win32API)、库和可执⾏⽂件。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环境。
安装:直接双击进⾏安装即可,把arm-none-eabi-gcc⾥的bin⽂件夹添加到PATH环境变量,注销然后在命令⾏中输⼊arm-none-eabi-gcc -v如果显⽰了版本就说明安装成功。
2.3 stm32f4官⽅库
如果使⽤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 调⽤: ⽣成bin⽂件
2.6关于免安装程序的环境部署
其它MinGW和gcc-arm-none-eabi都可以直接将⽬录的程序提取出来,直接做成绿⾊版安装环境的,⽬录结构如下
gnu编译器批处理是这样写的
@echo off
setlocal enabledelayedexpansion
set thispath=%cd%
set path==%path%;%thispath%\MinGW\bin;%thispath%\MinGW\include;%thispath%\MinGW\lib;%thispath%\ARM\bin;" cd stm32f4project &
直接运⾏批处理即可⽣成Bin⽂件
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论