1.在windows下使用STM32CubeMX工具生成源码
使用STM32CubeMX工具生成STM32G070工程后,需要把Makefile文件、CMSIS文件夹、STM32G0xx_LL_Driver文件夹拷贝到/driver_os/stm32g0xx/目录中。
2.通过修改Makefile文件,生成lib_stm32g0xx.a静态库文件
修改后的Makefile文件如下,执行make clean;make命令即可生成lib_stm32g0xx.a库。
CC := arm-none-eabi-gcc
AR := arm-none-eabi-ar
AS := arm-none-eabi-gcc -x assembler-with-cpp
MKDIR := mkdir
RM = rm -rf
###########################################
OBJS_PATH := objs
PLATFORM := stm32g0xx
TARGET := lib_$(PLATFORM).a
#---------------- CFLAGS ----------------------
CFLAGS := -g -O2 -Wall
CFLAGS += -mlittle-endian -mthumb -mcpu=cortex-m0plus -march=armv6s-m
CFLAGS += -ffreestanding -nostdlib
CFLAGS += -I. -ICMSIS/Include -ICMSIS/Device/ST/STM32G0xx/Include -ISTM32G0xx_LL_Driver/Inc
CFLAGS += -DSTM32G070xx \
-DUSE_FULL_LL_DRIVER \
-DHSE_VALUE=8000000 \
-DHSE_STARTUP_TIMEOUT=100 \
-DLSE_STARTUP_TIMEOUT=5000 \
-DLSE_VALUE=32768 \
-DEXTERNAL_CLOCK_VALUE=48000 \
-DHSI_VALUE=16000000 \
-DLSI_VALUE=32000 \
-DVDD_VALUE=3300 \
-DPREFETCH_ENABLE=0 \
-DINSTRUCTION_CACHE_ENABLE=1 \
-DDATA_CACHE_ENABLE=1
#-------------------- list src path --------------------
COBJS_DIRS = \
$(OBJS_PATH)/STM32G0xx_LL_Driver/Src \
$(OBJS_PATH)/CMSIS/Device/ST/STM32G0xx/Source/Templates
SOBJS_DIRS = \
$(OBJS_PATH)/CMSIS/Device/ST/STM32G0xx/Source/Templates/gcc
#-------------------- list .c objs --------------------
SOBJS := $(OBJS_PATH)/CMSIS/Device/ST/STM32G0xx/Source/Templates/gcc/startup_stm32g070xx.o
COBJS := \
$(OBJS_PATH)/STM32G0xx_LL_Driver/Src/stm32g0xx_ll_adc.o \
$(OBJS_PATH)/STM32G0xx_LL_Driver/Src/stm32g0xx_ll_rcc.o \
$(OBJS_PATH)/STM32G0xx_LL_Driver/Src/stm32g0xx_ll_dma.o \
$(OBJS_PATH)/STM32G0xx_LL_Driver/Src/stm32g0xx_ll_gpio.o \
$(OBJS_PATH)/STM32G0xx_LL_Driver/Src/stm32g0xx_ll_exti.o \
$(OBJS_PATH)/STM32G0xx_LL_Driver/Src/stm32g0xx_ll_utils.o \
$(OBJS_PATH)/STM32G0xx_LL_Driver/Src/stm32g0xx_ll_i2c.o \
$(OBJS_PATH)/STM32G0xx_LL_Driver/Src/stm32g0xx_ll_rtc.o \
$(OBJS_PATH)/STM32G0xx_LL_Driver/Src/stm32g0xx_ll_spi.o \
$(OBJS_PATH)/STM32G0xx_LL_Driver/Src/stm32g0xx_ll_pwr.o \
$(OBJS_PATH)/STM32G0xx_LL_Driver/Src/stm32g0xx_ll_tim.o \
$(OBJS_PATH)/STM32G0xx_LL_Driver/Src/stm32g0xx_ll_usart.o \
$(OBJS_PATH)/CMSIS/Device/ST/STM32G0xx/Source/Templates/system_stm32g0xx.o
#------build rule -----
.PHONY: clean makedirs maketarget
all:
$(MAKE) makedirs
$(MAKE) maketarget
@echo build end datetime:$(shell date)
makedirs:$(OBJS_PATH) $(COBJS_DIRS) $(SOBJS_DIRS)
maketarget: $(TARGET)
#---------------------- build .o dir -------------------
$(OBJS_PATH):
# @echo $(MKDIR) $(OBJS_PATH)
-@$(MKDIR) -p $@
$(COBJS_DIRS):
# @echo $(MKDIR) $(OBJS_DIRS)
-@$(MKDIR) -p $@
$(SOBJS_DIRS):
# @echo $(MKDIR) $(OBJS_DIRS)
-@$(MKDIR) -p $@
#----------------------- build target --------------------
$(TARGET):$(COBJS) $(SOBJS)
$(AR) -rsv $(TARGET) $(SOBJS) $(COBJS)
cp $(TARGET) ../../middle/plateform/stm32g0xx/libs
#------ .c >> .o -----
$(OBJS_PATH)/%.o : %.c
$(CC) $(CFLAGS) -c -o $@ $^
#------ .s >> .o -----
$(OBJS_PATH)/%.o: %.s
$(AS) -c $(CFLAGS) $< -o $@
clean:
rm -f $(COBJS) $(SOBJS) $(TARGET)
rm -f ../../middle/plateform/stm32g0xx/libs/$(TARGET)