GPIO Konfiguration und LED

OP (Firma: Fa) #4943566
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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.