2015-07-28 43 views
0

我是一名嵌入式编程的初学者,正在使用IAR工作台来处理我的项目,使用STM32F4Discovery。我想编译现有的代码,并且在几个地方就好像位定义了一些错误如下:位定义错误 - IAR Workbench

Error[Pe020]: identifier "GPIO_PIN_SET" is undefined

现在,GPIO_PIN_SET在文件stm32f4xx_gpio_hal.h定义,并且已经包含在我项目。为了在网上查询时解决此问题,我找到了this解决方案。但是,我的IAR Workbench中的General Options中没有System选项卡。我有一个完整版的IAR Workbench,我不知道为什么System选项卡丢失。

我也试图定义

#define ENABLE_BIT_DEFINITIONS 

在我main.c文件,但无济于事在this链接说明。

试图设置

#define STM32F4XX 
#define USE_STDPERIPH_DRIVER 

main.c文件或提到here也没有帮助定义在General OptionsPreprocessor标签符号STM32F4XXUSE_STDPERIPH_DRIVER

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

回答

1

在“项目”中包括一个头文件是不够的,你应该实际包括它(直接或间接)在声明将被使用的源文件。在任何一个半途而废的开发工具包中,这都会很简单,但我们坚持使用ST,他们迫使我们按照自己的方式行事。

包括 “大师” 头在你的main.c

#include "stm32f429i_discovery.h"

这将反过来包括stm32f4xx_hal.h,其中包括stm32f4xx_hal_conf.h,其中包括stm32f4xx_hal_gpio.h如果有合适的#define在那里。

您可能没有stm32f4xx_hal_conf.h

如果是这样的话,那么驱动程序\ STM32F4xx_HAL_Driver \公司\ stm32f4xx_hal_conf_template.h复制到你的项目,其重命名为stm32f4xx_hal_conf.h。否则,请确保#define HAL_GPIO_MODULE_ENABLED未被注释掉。

确立正确的#define

STM32CubeF4的新版本,因为你已经挂写教程已被释放,并几件事情显然已经改变了。从版本1.6.0开始,在预处理器选项中定义STM32F429xx,并忘记上面的那些。是的,我注意到现在有一​​个1.7.0版本,我们希望兼容性能持续这个时间。