Forum: Mikrocontroller und Digitale Elektronik STM32 mit STM Cube IDE programmieren


von Valentin H. (vh789)


Lesenswert?

Hallo zusammen,

ich möchte für ein Projekt ein Programm auf meinem STM32F401RE Nucleo 
Board testen.
Komischerweise kriege ich es nicht einmal hin, einen Pin anzusteuern 
(z.B. LED, PA5).
Inzwischen habe ich mein gesamtes Programm gelöscht und meine Main hat 
nur noch folgenden Code innerhalb der while Schleife:
1
HAL_GPIO_TogglePin(GPIOA,5);
2
HAL_Delay(200);

So sieht das Setup des Pins aus (aus Cube MX generiert):
1
GPIO_InitStruct.Pin = LED_Pin;
2
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
3
GPIO_InitStruct.Pull = GPIO_NOPULL;
4
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
5
HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);

Fehler gibt es keine und die Konsole schließt damit ab:
1
Download verified successfully 
2
Debugger connection lost.
3
Shutting down...

woraus ich schließe, dass das Programm i.O. ist und die Verbindung von 
uC und PC passt.

Trotzdem passiert nichts. Ich habe auch schon versucht, einfach nur 
irgendeinen Pin High zu schalten, und den mit einem Multimeter zu 
messen, falls die LED oder die Verbindung kaputt ist. Auch das hat nicht 
funktioniert.
Da muss irgendein ganz simpler Fehler oder eine Kleinigkeit, die ich 
vergessen habe das Problem sein. Kann mir jemand helfen?

von Martin B. (ratazong)


Lesenswert?

Wenn Du in der HAL Pin5 ansteuernn willst erwartet der nicht die 5 
sondern (1<<5)

Also: HAL_GPIO_TogglePin(GPIOA,(1<<5));

wenn du 5 eingibst, sollten 2 pins toggeln, sofern sie konfiguriert 
sind.

Ob LED_Pin richtig definiert wurde kann ich von hier aus natürlich nicht 
sagen, das wird irgendwo in CubeMx gesetzt.


Muss man sich dran gewöhnen, wie an vieles in der HAL.

Martin

von Harry L. (mysth)


Lesenswert?

Geb deinem Pin zuerst mal im CubeMX einen Namen - z.B. "LED" (re.Klick 
auf den Pin -> User Label)

Jetzt findet du in main.h passende Makros für diesen Pin.

Der Toggle sieht dann so aus:
1
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);

Das läuft einheitlich nach dem selben Schema und hat den Vorteil, daß du 
den Pin jederzeit im CubeMX auf einen anderen Pin ummappen kannst, ohne 
eine einzige Zeile Code ändern zu müssen.

: Bearbeitet durch User
von Valentin H. (vh789)


Lesenswert?

Vielen Dank, jetzt klappt es!

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.