Watchdog lib for LPC1768
Fork of Watchdog by
Revision 7:093e74b9c2c8, committed 2018-01-09
- Comitter:
- bramkelder
- Date:
- Tue Jan 09 10:45:36 2018 +0000
- Parent:
- 6:e0f547e22dd5
- Commit message:
- removed unneeded boards
Changed in this revision
Watchdog.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r e0f547e22dd5 -r 093e74b9c2c8 Watchdog.cpp --- a/Watchdog.cpp Mon Mar 16 01:04:32 2015 +0000 +++ b/Watchdog.cpp Tue Jan 09 10:45:36 2018 +0000 @@ -15,7 +15,6 @@ #include "mbed.h" #include "Watchdog.h" -#if defined( TARGET_LPC1768 ) /// Watchdog gets instantiated at the module level Watchdog::Watchdog() { wdreset = (LPC_WDT->WDMOD >> 2) & 1; // capture the cause of the previous reset @@ -41,60 +40,3 @@ bool Watchdog::WatchdogCausedReset() { return wdreset; } -#elif defined( TARGET_LPC4088 ) -// from Gesotec Gesotec -/// Watchdog gets instantiated at the module level -Watchdog::Watchdog() { - wdreset = (LPC_WDT->MOD >> 2) & 1; // capture the cause of the previous reset -} - -/// Load timeout value in watchdog timer and enable -void Watchdog::Configure(float s) { - //LPC_WDT->CLKSEL = 0x1; // Set CLK src to PCLK - uint32_t clk = 500000 / 4; // WD has a fixed /4 prescaler, and a 500khz oscillator - LPC_WDT->TC = (uint32_t)(s * (float)clk); - LPC_WDT->MOD = 0x3; // Enabled and Reset - Service(); -} - -/// "Service", "kick" or "feed" the dog - reset the watchdog timer -/// by writing this required bit pattern -void Watchdog::Service() { - LPC_WDT->FEED = 0xAA; - LPC_WDT->FEED = 0x55; -} - -/// get the flag to indicate if the watchdog causes the reset -bool Watchdog::WatchdogCausedReset() { - return wdreset; -} -#elif defined( TARGET_STM ) -// Derived from Chau Vo -/// Watchdog gets instantiated at the module level -Watchdog::Watchdog() { - wdreset = (RCC->CSR & (1<<29)) ? true : false; // read the IWDGRSTF (Independent WD, not the windows WD) -} - -/// Load timeout value in watchdog timer and enable -void Watchdog::Configure(int pr) { - // http://www.st.com/web/en/resource/technical/document/reference_manual/CD00171190.pdf - IWDG->KR = 0x5555; // enable write to PR, RLR - IWDG->PR = pr; // Init prescaler, page 486 Reference Manual - IWDG->RLR = 0xFFF; // Init RLR - IWDG->KR = 0xAAAA; // Reload the watchdog - IWDG->KR = 0xCCCC; // Starts the WD -} - -/// "Service", "kick" or "feed" the dog - reset the watchdog timer -void Watchdog::Service() { - IWDG->KR = 0xAAAA; -} - -/// get the flag to indicate if the watchdog causes the reset -bool Watchdog::WatchdogCausedReset() { - if (wdreset) { - RCC->CSR |= (1<<24); // clear reset flag - } - return wdreset; -} -#endif