STM32 Probleme mit Watchdog

OP #2085486
Lesenswert?
• ▲
▼
Das Problem habe ich in der Zwischenzeit "gelöst"; indem ich es 
umschifft habe. Habe aber nicht die geringste Ahnung, was da nicht 
koscher ist.

In medias res: Die Software laeuft seit mehreren Tagen stabil. Keinerlei 
Haenger und dergleichen.
Also Zeit den Watchdog zu aktivieren.
Erstes Aha-Erlebnis: beim STM32 gibts 2 davon.
Ich entscheide mich für den WWDG. Ein Blick auf das ST-Beispielprogramm, 
ein Blick ins Manual: alles ganz einfach.
24 Stunden spaeter: "Dann halt den IWDG; was soll's".
Wieder ein Blick auf das ST-Beispielprogramm, wieder ein Blick ins 
Manual: alles ganz einfach!

Weitere 24 Stunden spater steh ich nun hier. Fassungslos mich am Kopf 
kratzend.

Meine Vorgendsweise ist die:
TIM2 / CH4 tiggert alle 100ms.
Damit steuere ich eine CTRL-LED.
Dorthin habe ich auch IWDG_ReloadCounter() gesetzt.

Wenn ich nun gleich oder auch ein paar Zeilen unterhalb IWDG_init() 
einen Breakpoint setze und dann weiterfahre, funktioniert alles wie es 
soll.
Ohne den Breakpoint resetet sich das Miststück fortlaufend.
1
TIM2_init();
2
:
3
weitere inits ...
4
:
5
:
6
IWDG_init();  // 300ms timeout
7
TIM2_start(); 
8
:
9
:
Nach Stunden des TryAndError fand ich heraus, dass wenn ich diese 
Reihenfolge waehle, sich alles in Wohlwollen auflöst.
1
:
2
IWDG_init();  
3
TIM2_init();
4
TIM2_start(); 
5
:

Ich vermute, dass ich bei der Initialisierung des TIM2 etwas falsch 
mache. Aber anderseits: vieles in der Software basiert auf TIM2. Wenn da 
was falsch waere, haette ich das das sicher bememerkt.

(Da die Codes für TIM2 mehr als ein paar Zeilen sind, lege ich diese als 
Attachment bei.)

1
//=============================
2
// IWDG_init
3
//=============================
4
void IWDG_init(void)
5
{  
6
  IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
7
  IWDG_SetPrescaler(IWDG_Prescaler_32);
8
  IWDG_SetReload(375); 
9
  IWDG_ReloadCounter(); 
10
  //IWDG_WriteAccessCmd(IWDG_WriteAccess_Disable);
11

12
  IWDG_Enable();
13
  while((IWDG->SR & IWDG_FLAG_RVU) != (uint32_t)RESET);
14
  DBGMCU_Config(DBGMCU_IWDG_STOP, ENABLE);
15
}

Dank im voraus!
Angehängte Dateien:

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.