TARGET = hub75_80x40 BUILD = build FW_VERSION = 1.0.0 FW_REPO = ../RGB-Matrix-Px-xx FW_GIT = $(shell git -C $(FW_REPO) rev-parse --short=6 HEAD) FW_DATE = $(shell git -C $(FW_REPO) log -1 --format=%cd --date=format:%Y%m%d) RELEASE_DIR = firmware RELEASE_NAME = $(TARGET)_v$(FW_VERSION)_$(FW_DATE)_$(FW_GIT) PREFIX = arm-none-eabi- CC = $(PREFIX)gcc AS = $(PREFIX)gcc -x assembler-with-cpp OBJCOPY = $(PREFIX)objcopy SIZE = $(PREFIX)size SRC_ROOT = ../RGB-Matrix-Px-xx/example/STM32/STM32F103RB C_SOURCES = \ $(SRC_ROOT)/Core/Src/main.c \ $(SRC_ROOT)/Core/Src/gpio.c \ $(SRC_ROOT)/Core/Src/tim.c \ $(SRC_ROOT)/Core/Src/usart.c \ $(SRC_ROOT)/Core/Src/weight_ui.c \ $(SRC_ROOT)/Core/Src/stm32f1xx_it.c \ $(SRC_ROOT)/Core/Src/stm32f1xx_hal_msp.c \ $(SRC_ROOT)/Core/Src/system_stm32f1xx.c \ $(SRC_ROOT)/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c \ $(SRC_ROOT)/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c \ $(SRC_ROOT)/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c \ $(SRC_ROOT)/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c \ $(SRC_ROOT)/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c \ $(SRC_ROOT)/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c \ $(SRC_ROOT)/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c \ $(SRC_ROOT)/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c \ $(SRC_ROOT)/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c \ $(SRC_ROOT)/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c \ $(SRC_ROOT)/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c \ $(SRC_ROOT)/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c \ $(SRC_ROOT)/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c \ $(SRC_ROOT)/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c \ $(SRC_ROOT)/User/GUI/GUI_Paint.c \ $(SRC_ROOT)/User/Driver_HUB75/Driver_RGBMatrix.c \ $(SRC_ROOT)/User/image/image.c \ $(SRC_ROOT)/User/Fonts/font8.c \ $(SRC_ROOT)/User/Fonts/font12.c \ $(SRC_ROOT)/User/Fonts/font12CN.c \ $(SRC_ROOT)/User/Fonts/font16.c \ $(SRC_ROOT)/User/Fonts/font20.c \ $(SRC_ROOT)/User/Fonts/font24.c \ $(SRC_ROOT)/User/Fonts/font24CN.c \ syscalls.c ASM_SOURCES = startup_stm32f103zet6.s C_INCLUDES = \ -I$(SRC_ROOT)/Core/Inc \ -I$(SRC_ROOT)/Drivers/STM32F1xx_HAL_Driver/Inc \ -I$(SRC_ROOT)/Drivers/STM32F1xx_HAL_Driver/Inc/Legacy \ -I$(SRC_ROOT)/Drivers/CMSIS/Device/ST/STM32F1xx/Include \ -I$(SRC_ROOT)/Drivers/CMSIS/Include \ -I$(SRC_ROOT)/User/GUI \ -I$(SRC_ROOT)/User/Driver_HUB75 \ -I$(SRC_ROOT)/User/Fonts \ -I$(SRC_ROOT)/User/image CPU = -mcpu=cortex-m3 -mthumb -mfloat-abi=soft DEFS = -DSTM32F103xB -DUSE_HAL_DRIVER -DHSE_VALUE=8000000U -DHUB75_PANEL_PROFILE=HUB75_PANEL_PROFILE_80X40_1_20 -DFW_GIT_HASH=\"$(FW_GIT)\" OPT = -Os CFLAGS = $(CPU) $(DEFS) $(C_INCLUDES) $(OPT) -Wall -ffunction-sections -fdata-sections -fno-common -g ASFLAGS = $(CPU) -g LDFLAGS = $(CPU) -TSTM32F103ZET6.ld -Wl,--gc-sections -Wl,-u,fw_build_id -Wl,-Map=$(BUILD)/$(TARGET).map --specs=nano.specs --specs=nosys.specs OBJECTS = $(addprefix $(BUILD)/,$(notdir $(C_SOURCES:.c=.o))) OBJECTS += $(addprefix $(BUILD)/,$(notdir $(ASM_SOURCES:.s=.o))) vpath %.c $(sort $(dir $(C_SOURCES))) vpath %.s $(sort $(dir $(ASM_SOURCES))) all: $(BUILD)/$(TARGET).elf $(BUILD)/$(TARGET).bin $(BUILD)/$(TARGET).hex release $(SIZE) $(BUILD)/$(TARGET).elf release: $(BUILD)/$(TARGET).hex $(BUILD)/$(TARGET).bin python -c "import os,shutil; os.makedirs(r'$(RELEASE_DIR)', exist_ok=True); shutil.copyfile(r'$(BUILD)/$(TARGET).hex', r'$(RELEASE_DIR)/$(RELEASE_NAME).hex'); shutil.copyfile(r'$(BUILD)/$(TARGET).bin', r'$(RELEASE_DIR)/$(RELEASE_NAME).bin'); print(r'$(RELEASE_DIR)/$(RELEASE_NAME)')" $(BUILD)/%.o: %.c | $(BUILD) $(CC) -c $(CFLAGS) $< -o $@ $(BUILD)/%.o: %.s | $(BUILD) $(AS) -c $(ASFLAGS) $< -o $@ $(BUILD)/$(TARGET).elf: $(OBJECTS) $(CC) $(OBJECTS) $(LDFLAGS) -o $@ $(BUILD)/$(TARGET).bin: $(BUILD)/$(TARGET).elf $(OBJCOPY) -O binary $< $@ $(BUILD)/$(TARGET).hex: $(BUILD)/$(TARGET).elf $(OBJCOPY) -O ihex $< $@ $(BUILD): mkdir -p $(BUILD) clean: rm -rf $(BUILD) .PHONY: all clean release