【问题标题】:what means about "-DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER" as the flags of arm-none-eabi-gcc?“-DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER”作为 arm-none-eabi-gcc 的标志是什么意思?
【发布时间】:2019-11-26 14:41:12
【问题描述】:

它们看起来像是 stm32 的启动文件和标准文件,但我在“GCC 官方参考 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

【问题讨论】:

    标签: gcc makefile stm32 stm32f1


    【解决方案1】:

    -D 是一个 preprocessor flag 传递给 GCC 以在编译之前定义一些东西。可以用来开启库的某些功能,甚至可以调试。

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

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

    【讨论】:

    • 我明白了。谢谢!:)
    【解决方案2】:

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

    documentation link

    or look for official documentation

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-03-24
        • 2011-08-23
        • 1970-01-01
        • 2021-08-28
        • 1970-01-01
        • 1970-01-01
        • 2022-01-14
        相关资源
        最近更新 更多