int32_t main (void) { /* Init System, IP clock and multi-function I/O In the end of SYS_Init() will issue SYS_LockReg() to lock protected register. If user want to write protected register, please issue SYS_UnlockReg() to unlock protected register if necessary */ SYS_Init(); /* Init UART to 115200-8n1 for print message */ UART_Open(UART0, 115200); printf("\nThis sample code demonstrate using WDT in polling mode\n"); // WDT register is locked, so it is necessary to unlock protect register before configure WDT SYS_UnlockReg(); // WDT timeout every 2^14 WDT clock, disable system reset, disable wake up system WDT_Open(WDT_TIMEOUT_2POW14, 0, FALSE, FALSE); while(1) { // WDT timeout flag set if(WDT_GET_TIMEOUT_INT_FLAG()) { // Reset WDT and clear time out flag WDT_CLEAR_TIMEOUT_INT_FLAG(); printf("Reset WDT counter\n"); } } }
/** * @brief IRQ Handler for WDT and WWDT Interrupt * * @param None * * @return None * * @details The WDT_IRQHandler is default IRQ of WDT and WWDT, declared in startup_NUC029xDE.s. */ void WDT_IRQHandler(void) { if(WDT_GET_TIMEOUT_INT_FLAG() == 1) { /* Clear WDT time-out interrupt flag */ WDT_CLEAR_TIMEOUT_INT_FLAG(); g_u8IsWDTTimeoutINT = 1; } }
/** * @brief IRQ Handler for WDT Interrupt * * @param None * * @return None * * @details The WDT_IRQHandler is default IRQ of WDT, declared in startup_M451Series.s. */ void WDT_IRQHandler(void) { if(g_u32WDTINTCounts < 10) WDT_RESET_COUNTER(); if(WDT_GET_TIMEOUT_INT_FLAG() == 1) { /* Clear WDT time-out interrupt flag */ WDT_CLEAR_TIMEOUT_INT_FLAG(); g_u32WDTINTCounts++; } if(WDT_GET_TIMEOUT_WAKEUP_FLAG() == 1) { /* Clear WDT time-out wake-up flag */ WDT_CLEAR_TIMEOUT_WAKEUP_FLAG(); g_u8IsWDTWakeupINT = 1; } }