# put your *.o targets here, make should handle the rest! SRCS = main.c system_stm32f0xx.c # all the files will be generated with this name (main.elf, main.bin, main.hex, etc) PROJ_NAME=main # Location of the Libraries folder from the STM32F0xx Standard Peripheral Library STD_PERIPH_LIB=Libraries # location of OpenOCD Board .cfg files (only used with 'make program') OPENOCD_BOARD_DIR=/usr/share/openocd/scripts/board # Configuration (cfg) file containing programming directives for OpenOCD OPENOCD_PROC_FILE=extra/stm32f0-openocd.cfg # that's it, no need to change anything below this line! ################################################### CC=arm-none-eabi-gcc OBJCOPY=arm-none-eabi-objcopy CFLAGS = -g -O2 -Wall -TDevice/stm32_flash.ld CFLAGS += -mlittle-endian -mthumb -mcpu=cortex-m0 -march=armv6s-m ################################################### vpath %.c src vpath %.a $(STD_PERIPH_LIB) ROOT=$(shell pwd) CFLAGS += -Iinc -I$(STD_PERIPH_LIB) -I$(STD_PERIPH_LIB)/CMSIS/Device/ST/STM32F0xx/Include CFLAGS += -I$(STD_PERIPH_LIB)/CMSIS/Include -I$(STD_PERIPH_LIB)/STM32F0xx_StdPeriph_Driver/inc CFLAGS += -include$(STD_PERIPH_LIB)/stm32f0xx_conf.h SRCS += Device/startup_stm32f0xx.s # add startup file to build OBJS = $(SRCS:.c=.o) ################################################### .PHONY: lib proj all: lib proj lib: $(MAKE) -C $(STD_PERIPH_LIB) proj: $(PROJ_NAME).elf $(PROJ_NAME).elf: $(SRCS) $(CC) $(CFLAGS) $^ -o $@ -L$(STD_PERIPH_LIB) -lstm32f0 $(OBJCOPY) -O ihex $(PROJ_NAME).elf $(PROJ_NAME).hex $(OBJCOPY) -O binary $(PROJ_NAME).elf $(PROJ_NAME).bin program: $(PROJ_NAME).bin openocd -f $(OPENOCD_BOARD_DIR)/stm32f0discovery.cfg -f $(OPENOCD_PROC_FILE) -c "stm_flash `pwd`/$(PROJ_NAME).bin" -c shutdown clean: rm -f *.o rm -f $(PROJ_NAME).elf rm -f $(PROJ_NAME).hex rm -f $(PROJ_NAME).bin