Forum: Mikrocontroller und Digitale Elektronik GPIO Konfiguration und LED


von D. I. (Firma: Fa) (buell)


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

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.