You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
25 lines
535 B
25 lines
535 B
4 months ago
|
typedef enum {
|
||
|
WATCHDOG_50_MS = (400U - 1U),
|
||
|
WATCHDOG_500_MS = 4000U,
|
||
|
} WatchdogTimeout;
|
||
|
|
||
|
static void watchdog_feed(void) {
|
||
|
IND_WDG->KR = 0xAAAAU;
|
||
|
}
|
||
|
|
||
|
void watchdog_init(WatchdogTimeout timeout) {
|
||
|
// enable watchdog
|
||
|
IND_WDG->KR = 0xCCCCU;
|
||
|
IND_WDG->KR = 0x5555U;
|
||
|
|
||
|
// 32KHz / 4 prescaler = 8000Hz
|
||
|
register_set(&(IND_WDG->PR), 0x0U, IWDG_PR_PR_Msk);
|
||
|
register_set(&(IND_WDG->RLR), timeout, IWDG_RLR_RL_Msk);
|
||
|
|
||
|
// wait for watchdog to be updated
|
||
|
while (IND_WDG->SR != 0U);
|
||
|
|
||
|
// start the countdown
|
||
|
watchdog_feed();
|
||
|
}
|