Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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");
}