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