a

Fork of Watchdog by Bernard Remond

Revision:
7:098b53d90b3d
Parent:
6:40f189c7795b
--- a/Watchdog.cpp	Mon Mar 02 21:36:00 2015 +0000
+++ b/Watchdog.cpp	Tue Sep 26 20:47:06 2017 +0000
@@ -21,8 +21,8 @@
 /// @author Bernaérd Remond
 ///
 
-#define LPC
-//#define ST_NUCLEO
+//#define LPC
+#define ST_NUCLEO
 
 
 #include "mbed.h"
@@ -31,20 +31,23 @@
 
 /// Watchdog gets instantiated at the module level
 Watchdog::Watchdog() {
+/*
 #ifdef LPC    
     wdreset = (LPC_WDT->WDMOD >> 2) & 1;    // capture the cause of the previous reset
 #endif
+*/
 #ifdef ST_NUCLEO
     // capture the cause of the previous reset
     /* Check if the system has resumed from IWDG reset */
-/*
+    printf("Watchdog()\n");
+
     if (__HAL_RCC_GET_FLAG(RCC_FLAG_IWDGRST)) {
         wdreset = true;
     }
     else {
         wdreset = false; 
     }
-*/        
+        
         wdreset = false; 
 #endif
 
@@ -52,16 +55,18 @@
 
 /// Load timeout value in watchdog timer and enable
 void Watchdog::Configure(float timeout) {
+/*
 #ifdef LPC    
     LPC_WDT->WDCLKSEL = 0x1;                // Set CLK src to PCLK
     uint32_t clk = SystemCoreClock / 16;    // WD has a fixed /4 prescaler, PCLK default is /4
     LPC_WDT->WDTC = (uint32_t)(timeout * (float)clk);
     LPC_WDT->WDMOD = 0x3;                   // Enabled and Reset
-#endif   
+#endif
+*/   
 #ifdef ST_NUCLEO
     // see http://embedded-lab.com/blog/?p=9662    
     #define LsiFreq (45000)
-    
+    printf("Configure\n");
     uint16_t PrescalerCode;
     uint16_t Prescaler;
     uint16_t ReloadValue;
@@ -100,7 +105,7 @@
     ReloadValue = (uint32_t)(timeout * (LsiFreq/Prescaler));
     
     Calculated_timeout = ((float)(Prescaler * ReloadValue)) / LsiFreq;
-    printf("WATCHDOG set with prescaler:%d reload value: 0x%X - timeout:%f\n",Prescaler, ReloadValue, Calculated_timeout);
+    printf("WATCHDOG set with prescaler:%d reload value Nucleo: 0x%X - timeout:%f\n",Prescaler, ReloadValue, Calculated_timeout);
     
     IWDG->KR = 0x5555; //Disable write protection of IWDG registers      
     IWDG->PR = PrescalerCode;      //Set PR value      
@@ -115,18 +120,26 @@
 /// "Service", "kick" or "feed" the dog - reset the watchdog timer
 /// by writing this required bit pattern
 void Watchdog::Service() {
+/*
 #ifdef LPC    
     LPC_WDT->WDFEED = 0xAA;
     LPC_WDT->WDFEED = 0x55;
-#endif    
+#endif
+*/    
 #ifdef ST_NUCLEO
+// printf("Service\n");
     IWDG->KR = 0xAAAA;         //Reload IWDG - See more at: http://embedded-lab.com/blog/?p=9662#sthash.6VNxVSn0.dpuf
 #endif
 }
 
 /// get the flag to indicate if the watchdog causes the reset
 bool Watchdog::WatchdogCausedReset() {
+    printf("WatchdogCausedReset\n");
     return wdreset;
 }
 
+bool Watchdog::dsable(){
+    
+    }
 
+