1. 在工程属性中,进入C/C++ Build -> Settings -> Target,选择MCU的型号。
2. 在工程属性中,进入C/C++ General -> Paths and Symbols -> Symbols
对于C8T6型号:
GNU C和S,s,asm中需要宏定义“STM32F10X_MD”和“USE_STDPERIPH_DRIVER”;
对于RCT6型号:
GNU C和S,s,asm中需要宏定义“STM32F10X_HD”和“USE_STDPERIPH_DRIVER”;
3. 修改stm32_flash.ld文件
对于C8T6型号,Flash长度为64K,RAM长度为20K;
对于RCT6型号,Flash长度为256K,RAM长度为48K;
用户模式堆的最高地址,
对于C8T6型号
_estack = 0x20005000; /* end of 20K RAM */
对于RCT6型号
_estack = 0x2000c000; /* end of 48K RAM */
最小的堆栈空间可以根据需要修改。
4. 修改Makefile文件
对于C8T6型号:
ASSEMBLER_FLAGS =-c -g -O0 -mcpu=cortex-m3 -mthumb -D"STM32F10X_MD" \
-D"USE_STDPERIPH_DRIVER" -x assembler-with-cpp $(INCLUDE_DIR)
COMPILER_FLAGS =-c -g -MMD -mcpu=cortex-m3 -O0 -Wall -ffunction-sections \
-fdata-sections -mthumb -D"STM32F10X_MD" -D"USE_STDPERIPH_DRIVER" \ $(INCLUDE_DIR)
对于RCT6型号:
将标红的“STM32F10X_MD”替换为“STM32F10X_HD”。
5. 修改启动文件
对于STM32F103不同型号的启动文件差异主要在于外设初始化配置上。不用容量的单片机的外设差别较多,因此可以直接替换启动文件而不必逐一修改它们。
对于C8T6型号,启动文件选“startup_stm32f10x_md.s”;
对于RCT6型号,启动文件选“startup_stm32f10x_hd.s”;
可以直接在/Libraries/Startup/文件夹中增删相关的文件,也可以在Makefile文件中将指定的文件排除。如下图所示:
# Define sources and objects
SRC := $(wildcard */*/*/*/*/*/*/*.c) \
$(wildcard */*/*/*/*/*/*.c) \
$(wildcard */*/*/*/*/*.c) \
$(wildcard */*/*/*/*.c) \
$(wildcard */*/*/*.c) \
$(wildcard */*/*.c) \
$(wildcard */*.c)
SRC := $(filter-out Libraries/Hardware/src/TM1639.c, $(SRC))
SRC := $(filter-out Libraries/SysExtend/src/tiny_printf.c, $(SRC))
SRC := $(filter-out freemodbus/BARE/demo.c, $(SRC))
SRCSASM := $(wildcard */*/*/*/*/*/*/*/*.s) \
$(wildcard */*/*/*/*/*/*/*.s) \
$(wildcard */*/*/*/*/*/*.s) \
$(wildcard */*/*/*/*/*.s) \
$(wildcard */*/*/*/*.s) \
$(wildcard */*/*/*.s) \
$(wildcard */*/*.s) \
$(wildcard */*.s)
SRCSASM := $(filter-out Libraries/Startup/startup_stm32f10x_hd.s, $(SRC))
6. 使用了Alwhales库
需要修改eeprom.h中关于flash划分作为eeprom的地址范围。
对于C8T6型号,flash的结束地址为“0x08010000”;
对于RCT6型号,flash的结束地址为“0x08040000”;