tom dunigan
/
k64f_wdog
k64f watchdog example
main.cpp
- Committer:
- manitou
- Date:
- 2017-04-09
- Revision:
- 0:93e3779ebc48
- Child:
- 1:c0b9e466e9e5
File content as of revision 0:93e3779ebc48:
#include "mbed.h" #define PRREG(z) printf(#z" 0x%x\n",z) Timer tmr; void wdog_init() { __disable_irq(); WDOG->UNLOCK = WDOG_UNLOCK_WDOGUNLOCK(0xC520); /* Key 1 */ WDOG->UNLOCK = WDOG_UNLOCK_WDOGUNLOCK(0xD928); /* Key 2 */ __NOP(); __NOP(); WDOG_TOVALL = (4000); // The next 2 lines sets the time-out value. This is the value that the watchdog timer compare itself to. WDOG_TOVALH = 0; WDOG_STCTRLH = (WDOG_STCTRLH_ALLOWUPDATE_MASK | WDOG_STCTRLH_WDOGEN_MASK | WDOG_STCTRLH_WAITEN_MASK | WDOG_STCTRLH_STOPEN_MASK); // Enable WDG WDOG_PRESC = 0; // prescaler __enable_irq(); } void kick() { __disable_irq(); WDOG_REFRESH = 0xA602; WDOG_REFRESH = 0xB480; __enable_irq(); } int main() { int i,fbus,flashbus; fbus = SystemCoreClock / (((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV2_MASK) >> SIM_CLKDIV1_OUTDIV2_SHIFT) + 1); flashbus = SystemCoreClock / (((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV4_MASK) >> SIM_CLKDIV1_OUTDIV4_SHIFT) + 1); printf("\nSystemCoreClock %d fbus %d flash %d %s %s\n",SystemCoreClock,fbus,flashbus,__TIME__,__DATE__); PRREG(WDOG->STCTRLH); PRREG(WDOG->PRESC); PRREG(WDOG->TOVALL); PRREG(WDOG->TOVALH); PRREG(WDOG->RSTCNT); wdog_init(); PRREG(WDOG->STCTRLH); PRREG(WDOG->PRESC); PRREG(WDOG->TOVALL); PRREG(WDOG->TOVALH); PRREG(WDOG->RSTCNT); wait_ms(100); kick(); for (i=1;i<=3; i++) { printf("running %d\n",i); wait(1.0); kick(); } printf("long wait reset\n"); wait(5.0); printf("never happen\n"); }