Gast
#3177876
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();
}
}