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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von svend (Gast)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


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

von svend (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.