Forum: Mikrocontroller und Digitale Elektronik STM32F4 Watchdog


von Frank (Gast)


Lesenswert?

Ich habe ein Problem mit dem Watchdog.

Er mach ständig einen Reset trotz aufruf von ResetWatchdog(); in der
Hauptschleift.

Wäre Dankbar für Hilfe.


//===================================================================
// Modul WWDG
//===================================================================
void InitWatchdog(int Baudrate)
{

//System Clock auf Watchdog
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);

WWDG_SetPrescaler(WWDG_Prescaler_1);    //WWDG clock counter = (PCLK1 
(30MHz)/4096)/1 = 7324 Hz (~137 us)
WWDG_SetCounter(80);           //Werte 0x40 und 0x7F
WWDG_SetWindowValue(120);         //Wert muss kleiner als 0x80 sein
                    //Aktualisieren nur wenn Counter
                    //Reset wenn < 120 und > 64

WWDG_Enable(127);            //WWDG timeout = ~137 us * (127-64) = 8.6 
ms

WWDG_ClearFlag();
WWDG_EnableIT();
}


//===================================================================
//
//===================================================================
void ResetWatchdog(void)
{

WWDG_SetCounter(80);

}

//===================================================================
//
//===================================================================
void WWDG_IRQHandler(void)
{

if (WWDG_GetFlagStatus())
  {
  WWDG_SetCounter(0x7f);
  WWDG_ClearFlag();
  }

}

von Stefan S. (stefan2013)


Lesenswert?

Hallo!

Vielleicht bist du in der Hauptschleife ja nicht im Window?
Versuchs mal nur in der early wakeup ISR.

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.