我是嵌入式编程的初学者,正在使用IAR工作台为我的项目使用STM32F4Discovery
。我正在尝试编译现有代码,并在几个位置有一些关于位定义的错误,如下所示:
Error[Pe020]: identifier "GPIO_PIN_SET" is undefined
现在,GPIO_PIN_SET
已在文件stm32f4xx_gpio_hal.h
中定义,并已包含在我的项目中。为了在网上查询时解决此问题,我找到了this解决方案。但是,我的IAR Workbench中的System
中没有General Options
标签。我有一个完整版的IAR Workbench,我不确定为什么缺少System
标签。
我也尝试过定义
#define ENABLE_BIT_DEFINITIONS
如我main.c
文件中的this链接所述,但无济于事。
尝试设置
#define STM32F4XX
#define USE_STDPERIPH_DRIVER
在main.c
文件中或定义STM32F4XX
中的符号USE_STDPERIPH_DRIVER
,Preprocessor
标签中的General Options
标签here MSDN documentation也没有&# 39; t help。
解决方案可能非常简单,我可能会忽略,但我无法弄清楚我可能会遗漏什么。任何帮助将不胜感激
答案 0 :(得分:1)
在"项目中包含头文件"实际上,您应该(直接或间接地)将它包含在要使用声明的源文件中。在任何中途理智的开发套件中都会如此简单,但我们仍然坚持ST,它们迫使我们按照自己的方式去做。
包含" master"您main.c
#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开始,在预处理器选项中定义 STM32F429xx
,并忘记上面的那些。是的,我已经注意到现在有一个版本1.7.0,让我们希望这次兼容性持续。