2015-07-28 4 views
0

Je suis un débutant avec la programmation intégrée et j'utilise l'atelier IAR pour un de mes projets en utilisant STM32F4Discovery. Je suis en train de compiler un code existant et ai quelques erreurs à quelques endroits en ce qui concerne les définitions de bits comme les suivantes:Erreur de définition de bit - IAR Workbench

Error[Pe020]: identifier "GPIO_PIN_SET" is undefined

Maintenant, le GPIO_PIN_SET est défini dans le fichier stm32f4xx_gpio_hal.h et est déjà inclus dans mon projet. Afin de résoudre ce problème lorsque j'ai regardé en ligne, j'ai trouvé la solution this. Toutefois, je n'ai pas l'onglet System dans le General Options dans mon IAR Workbench. J'ai une version complète de IAR Workbench et je ne vois pas pourquoi la tabulation System est manquante.

J'ai essayé aussi de définir

#define ENABLE_BIT_DEFINITIONS 

comme indiqué dans this lien dans mon dossier main.c mais en vain.

Essayer de mettre

#define STM32F4XX 
#define USE_STDPERIPH_DRIVER 

dans le fichier main.c ou définir les symboles STM32F4XX, USE_STDPERIPH_DRIVER dans l'onglet Preprocessor dans General Options comme mentionné here aussi n'a pas aidé.

La solution pourrait être très simple que je suis probablement sur mais je ne suis pas capable de comprendre ce qui pourrait me manquer. Toute aide serait la bienvenue

Répondre

1

Inclure un fichier d'en-tête dans un "projet" ne suffit pas, vous devriez l'inclure (directement ou indirectement) dans le fichier source où les déclarations doivent être utilisées. Ce serait aussi simple dans n'importe quel kit de développement, mais nous sommes coincés avec ST, et ils nous forcent à le faire à leur manière.

Inclure l'en-tête "maître" dans votre main.c

#include "stm32f429i_discovery.h"

ce serait à son tour inclure stm32f4xx_hal.h, qui comprend stm32f4xx_hal_conf.h, qui comprenait stm32f4xx_hal_gpio.h si les bons #defines étaient là.

Vous pourriez ne pas avoir stm32f4xx_hal_conf.h

Si tel est le cas, puis copiez Drivers \ STM32F4xx_HAL_Driver \ Inc \ stm32f4xx_hal_conf_template.h dans votre projet, renommez-stm32f4xx_hal_conf.h. Sinon, assurez-vous simplement que #define HAL_GPIO_MODULE_ENABLED n'est pas mis en commentaire.

Définir les #defines droite

Les nouvelles versions de STM32CubeF4 ont été libérés depuis le tutoriel que vous avez lié a été écrit, et un certain nombre de choses ont apparemment changé. À partir de la version 1.6.0, définissez STM32F429xx dans les Options du préprocesseur, et oubliez celles indiquées ci-dessus. Oui, j'ai remarqué qu'il y a une version 1.7.0 maintenant, espérons que la compatibilité dure cette fois.