Forum: Mikrocontroller und Digitale Elektronik STM32 Resetet durchgehend nach Shutdownmode


von User (Gast)


Lesenswert?

Guten Abend,

zum Ende der Woche, hab ich noch ein "kleines Problem", dessen Ursprung 
ich nicht identifizieren kann.

Ich nutze einen STM32L476, an dessen Wakup-Pins mehrere Taster 
angeschlossen sind. Die Taster sind mit einem externen Pullup 
angeschlossen. Der Controller so solange im Shutdown-Mode" verbleiben, 
bis ein Wakeup durch einen Taster ausgelöst wird, worauf später eine 
Aktion (aktuell beschreiben eines Displays) durchgeführt werden soll.

Jedoch verhält sich der Controller eigenartig:
- Nach dem Programmieren des Controllers, wird der Inhalt des Displays 2 
mal gewechselt.
- Nach Ab- und erneutem Anschalten der Spannungsversorgung startet der 
Controller durchgehend neu und beschreibt dabei jedesmal das Display.

Das ganze klingt für mich nach irgendwelchen Eventflags, welche den 
Reset und PowerOn betrifft, allerdings suche ich bisher vergeblich :(

Hier der betreffende Quellcode:
1
void SystemClock_Config (void) {
2
  RCC_ClkInitTypeDef RCC_ClkInitStruct;
3
4
  /* activate the sysclock source */
5
  __HAL_RCC_HSI_ENABLE();
6
7
  /* Sysclock */
8
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2|RCC_CLOCKTYPE_HCLK;
9
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
10
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
11
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
12
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
13
  HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1);
14
}
15
16
int main(void)
17
{
18
  /* clock initialization */
19
  SystemInit();
20
  SystemClock_Config();
21
  HAL_Init();
22
  debug_interface_init();
23
24
  __HAL_RCC_PWR_CLK_ENABLE();
25
       
26
        // Display wird hier beschrieben
27
28
        // Clear all interrupt flag
29
  __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WUF1);
30
  __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WUF2);
31
  __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WUF4);
32
33
  __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
34
  __HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB);
35
36
  RCC->CSR |= RCC_CSR_RMVF;
37
38
  HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1_LOW);  // Button Center
39
  HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN2_LOW);  // Button Left
40
  HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN4_LOW);  // Button Right
41
42
  /* Set the RIS controller into deep sleep */
43
  HAL_PWREx_EnterSHUTDOWNMode();
44
45
  while(1) {}
46
}

Ich nutze die "System Workbench" als Entwicklungsumgebung und die STM32 
HAL von STM für den L4 in der Version 1.5.0.

Vielleicht hat einer von euch eine Idee, woran das liegen könnte.

von Nop (Gast)


Lesenswert?

User schrieb:
> - Nach Ab- und erneutem Anschalten der Spannungsversorgung startet der
> Controller durchgehend neu

Ja natürlich. Powercut führt zum Neustart. Das ist doch normal?!

von User (Gast)


Lesenswert?

Das ist mir schon klar ;)
der Controller hat dies allerdings jedesmal direkt nach betretten des 
Shutdown Modus gemacht.

Letztendlich konnte ich dir Ursache finden, die Polarität der 
Wakeup-Pins war falsch.

Ein Pause tut manchmal gut ;)

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.