Forum: Mikrocontroller und Digitale Elektronik GPIO Konfiguration und LED


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 D. I. (Firma: Fa) (buell)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Experten

Ich habe ein Frage und zwar hatte ich mal in den Vorlesungen eine 8-bit 
Atmel MCU AT90USB... programmiert und da hatten wir zum Teil 
einfachheitshalber immer Initialisierungen von LED, Switches, Timer etc. 
immer im main vorgenommen.
Nun ja, eine LED, die zB an PortA4 angeschlossen konnte ich 
folgendermassen initialisieren und einschalten.
1
//Initialisierung
2
DDRA = 0x00;
3
DDRA = (1<<DDA4) bzw. DDRA=(1<<4) bzw. in hex angeben.
4
5
Das Einschalten dann erfolgte mittels:
6
7
PORTA |= 1 << PORTA4;

Nun soviel dazu.

Heute habe ich einmal versucht mit STM32L4 eine LED einzuschalten und 
habe dabei direkt die fertigen Funktionen von ST verwendet. Der Vorgang 
war so: Um es nicht all zu kompliziert zu machen, habe ich mittels 
STMCubeMx nur einen Port PA5, wo die LED LD2 angeschlossen ist 
(STM32L476RG Nucleo), als Ausgang definiert und habe den Code erzeugt 
(nur nötige Libraries eingestellt). Dann habe ich

In diesem Abschnitt, wo die Endlosschleife ist folgenden Code eingefügt.
1
 /* USER CODE BEGIN WHILE */
2
  while (1)
3
  {
4
     
5
    HAL_GPIO_TogglePin(GPIOA, 5); //Toggle LED
6
7
    HAL_Delay(1000); //Delay 1 Seconds
8
        
9
     
10
  /* USER CODE END WHILE */
11
12
  /* USER CODE BEGIN 3 */
13
      
14
  }
15
  /* USER CODE END 3 */
16
   
17
}

Leider tut sich aber nichts. Ich habe sonst nichts verändert.
Meine Frage ist nun, warum das so nicht funktioniert?! Und warum ich die 
LED nicht so direkt über das Ansprechen von PORTA = ... einschalten 
kann.

Die Initialisierung des GPIO ist so definiert:
1
static void MX_GPIO_Init(void)
2
{
3
4
  GPIO_InitTypeDef GPIO_InitStruct;
5
6
  /* GPIO Ports Clock Enable */
7
  __HAL_RCC_GPIOC_CLK_ENABLE();
8
  __HAL_RCC_GPIOA_CLK_ENABLE();
9
10
  /*Configure GPIO pin Output Level */
11
  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
12
13
  /*Configure GPIO pin : PA5 */
14
  GPIO_InitStruct.Pin = GPIO_PIN_5;
15
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
16
  GPIO_InitStruct.Pull = GPIO_NOPULL;
17
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
18
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
19
20
}
21
22
/* USER CODE BEGIN 4 */

Vielen Dank schon mal

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.