“-DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER”作为 arm-none-eabi-gcc 的标志是什么意思?

what means about "-DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER" as the flags of arm-none-eabi-gcc?

它们看起来像是stm32的启动文件和标准文件,但我在"GCC offical refeence PDF"中找不到它们。

为什么可以直接使用

这是 makefile 中 arm-none-eabi-gcc 的标志:

# specify compiler flags
CFLAGS  = -g -O2 -Wall
CFLAGS += -T$(STD_PERIPH_LIBS)/Project/STM32F10x_StdPeriph_Template/TrueSTUDIO/STM3210B-EVAL/stm32_flash.ld
CFLAGS += -mlittle-endian -mthumb -mcpu=cortex-m4 -mthumb-interwork
CFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16
CFLAGS += -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER
CFLAGS += -Wl,--gc-sections
CFLAGS += -I.
CFLAGS += -I$(STD_PERIPH_LIBS)/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/
CFLAGS += -I$(STD_PERIPH_LIBS)/Libraries/CMSIS/CM3/CoreSupport
CFLAGS += -I$(STD_PERIPH_LIBS)/Libraries/STM32F10x_StdPeriph_Driver/inc

它是特定于库的标志(在本例中为 STM32F10x 标准外设库)

documentation link

or look for official documentation

-Dpreprocessor flag 传递给 GCC 以在编译前定义一些东西。它可以用于启用库的某些功能甚至调试。

STM32F10X_MDUSE_STDPERIPH_DRIVER 启用部分包含的库。它是中密度设备库的 STM32F10 部分,支持使用标准外设库。

请注意,SPL 不再受支持,您应该升级到 HAL 或 HAL LL。

-Dsomething与源代码中的#define something相同。