2015-07-28 80 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版本,我們希望兼容性能持續這個時間。