【问题标题】:Bit definition error - IAR Workbench位定义错误 - IAR Workbench
【发布时间】:2015-10-18 15:01:09
【问题描述】:

我是嵌入式编程的初学者,我正在使用 IAR 工作台来完成我使用 STM32F4Discovery 的项目。我正在尝试编译现有代码,并在一些地方出现一些关于位定义的错误,如下所示:

Error[Pe020]: identifier "GPIO_PIN_SET" is undefined

现在,GPIO_PIN_SET 已在文件 stm32f4xx_gpio_hal.h 中定义,并且已包含在我的项目中。为了解决这个问题,我上网查了一下,找到了this的解决方案。但是,我的 IAR 工作台的 General Options 中没有 System 选项卡。我有完整版的 IAR Workbench,但不确定为什么缺少 System 选项卡。

我也尝试过定义

#define ENABLE_BIT_DEFINITIONS

如我的main.c 文件中的this 链接所述,但无济于事。

尝试设置

#define STM32F4XX
#define USE_STDPERIPH_DRIVER

main.c 文件中或在General OptionsPreprocessor 选项卡中定义符号STM32F4XXUSE_STDPERIPH_DRIVER,如提到的here 也没有帮助。

解决方案可能非常简单,我可能会忽略但无法弄清楚我可能遗漏了什么。任何帮助将不胜感激

【问题讨论】:

    标签: iar stm32f4discovery


    【解决方案1】:

    在“项目”中包含头文件是不够的,您实际上应该(直接或间接地)将它包含在要使用声明的源文件中。在任何中途健全的开发套件中都会如此简单,但我们被 ST 困住了,他们强迫我们按照他们的方式去做。

    在您的main.c 中包含“master”标头

    #include "stm32f429i_discovery.h"

    这将反过来包括stm32f4xx_hal.h,其中包括stm32f4xx_hal_conf.h,如果存在正确的#defines,则包括stm32f4xx_hal_gpio.h

    您可能没有stm32f4xx_hal_conf.h

    如果是这种情况,则将 Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_conf_template.h 复制到您的项目中,将其重命名为 stm32f4xx_hal_conf.h。否则,只需确保 #define HAL_GPIO_MODULE_ENABLED 未被注释掉即可。

    设置正确的#defines

    自您链接的教程编写以来,STM32CubeF4 的新版本已经发布,并且一些事情显然发生了变化。从 1.6.0 版本开始,在 Preprocessor Options 中定义 STM32F429xx,忘记上面的那些。是的,我注意到现在有一​​个 1.7.0 版本,希望这次兼容性能持续下去。

    【讨论】:

      猜你喜欢
      • 2021-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-25
      • 2013-06-21
      • 2019-02-17
      • 2013-11-08
      • 2013-10-20
      相关资源
      最近更新 更多