Forum: Mikrocontroller und Digitale Elektronik Erstes LED-Projekt mit STM-Board scheitert


von svend (Gast)


Lesenswert?

Hallo,
ich versuche hier meine ersten Test-Projekt für das STM32F407 zu starten 
und bin aber noch nicht mit den grundlegenden Befehlen für die 
GPIO-Ports und der  HAL-Library vertraut und finde leider auch keine 
übersichtlichen Auflistungen.
Ich konfiguriere mit CubeMX und nutze die Atollic-Umgebung. Für mein 
erstes LED-Projekt möchte ich die blaue LED des Boards toggeln, die auf 
Pin D15 liegt. Den habe ich als Push-Pull-Output konfiguriert und habe 
die Clock-Einstellungen (genutzt wird AHB1) mit 16 MHz so gelassen wie 
sie sind...

Für das Ansteuern einer blinkenden LED habe ich im Internet folgenden 
Code für die main.c-Datei gefunden, den ich entsprechend meinem Ausgang 
angepasst habe:

while (1)
  {HAL_GPIO_TogglePin(GPIOD,GPIO_Pin_15);
   HAL_Delay(100);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }

Wenn ich aber GPIO_Pin_15 wie oben eingebe, meckert mein Compiler 
"undeclard(first use in this function)".. wenn ich jedoch nur "15" 
eingebe, beanstandet er nichts! Warum ist das so?
Nichts desto trotz bekomme ich die LED auch beim fehlerlosen Kompilieren 
nicht zum Blinken!

Was hat es mit der HAL-Bibliothek auf sich und stimmt es, dass ich die 
bei Verwendung von CubeMx gar nicht zwingend brauche oder es sogar ein 
Fehler ist, sie hier einzubinden?

von pegel (Gast)


Lesenswert?

Hast du in CubeMX für den LED Pin einen Namen vergeben?
Dann schau in die main.h, da steht er drin.

von Martin B. (ratazong)


Lesenswert?

Dir fehlt ein hfile. Den musst Du includieren, dann kennt er GPIO_PIN_15

bei mir finde ich

#define GPIO_PIN_15                ((uint16_t)0x8000)  /* Pin 15 
selected   */

Wenn Du statt 15 (1<<15) eingibst sollte es klappen.

von pegel (Gast)


Lesenswert?

Vor allem Groß/Kleinschreibung beachten.
Und wie Martin schrieb, den wirklichen Wert der hinter GPIO_PIN_15 
steckt nehmen.

von svend (Gast)


Lesenswert?

ich hatte ihm vorher keinen eigenen Namen über user label gegeben, da 
stand dann auch entsprechend nichts in der header-Datei. Nun habe ich 
ihn Licht genannt und es taucht

#define licht_Pin GPIO_PIN_15
#define licht_GPIO_Port GPIOD

im Header auf. Jetzt klappt es auch. Aber warum muss ich dem Pin einen 
eigenen Namen geben?

von pegel (Gast)


Lesenswert?

Musst du nicht, aber wenn es mehr werden und einer licht heisst bleiben 
nicht viele Fragen offen, oder?

Beitrag #5741184 wurde vom Autor gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.