23 #include "common_util.h" 26 #include "isr_manager.h" 30 #define WDT_RR_VALUE 0x6E524635UL 32 void (*wdt_irq_handler)(void);
34 void hal_wdt_init(uint32_t period_ms,
void (*wdt_timeout_handler)(
void))
37 if (NRF_WDT->RUNSTATUS == WDT_RUNSTATUS_RUNSTATUS_Running)
44 NRF_WDT->CONFIG = (WDT_CONFIG_SLEEP_Run << WDT_CONFIG_SLEEP_Pos)
45 | (WDT_CONFIG_HALT_Pause << WDT_CONFIG_HALT_Pos);
50 NRF_WDT->RREN = (WDT_RREN_RR1_Enabled << WDT_RREN_RR1_Pos)
51 | (WDT_RREN_RR7_Enabled << WDT_RREN_RR7_Pos);
53 wdt_irq_handler = wdt_timeout_handler;
55 NRF_WDT->INTENSET = WDT_INTENSET_TIMEOUT_Enabled;
58 NVIC_ClearPendingIRQ(WDT_IRQn);
59 NVIC_SetPriority(WDT_IRQn, APP_IRQ_PRIORITY_HIGH);
60 NVIC_EnableIRQ(WDT_IRQn);
67 NRF_WDT->RR[1] = WDT_RR_VALUE;
68 NRF_WDT->RR[7] = WDT_RR_VALUE;
73 NRF_WDT->TASKS_START = 1;
77 void hal_wdt_Handler ()
79 void WDT_IRQHandler(
void)
83 NRF_WDT->EVENTS_TIMEOUT = 0;
85 if (wdt_irq_handler != NULL)
#define LFCLK_TICKS_MS(ms)
void hal_wdt_init(uint32_t period_ms, void(*wdt_timeout_handler)(void))