STM32 Resetet durchgehend nach Shutdownmode

Gast #4871875
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
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

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.