STM32 Resetet durchgehend nach Shutdownmode

Gast #4871875
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.
Gast #4872044
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 ;)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren