Jump to main content

##

# 3.30.22 Watchdog Timer (WDT)

The Watchdog Timer (WDT) is used to prevent system lockup if the software becomes trapped in a deadlock. It features one 12-bit down counter that allows a watchdog period of up to 16 seconds (slow clock around 32 kHz).

The WDT can generate a general reset or a processor reset only. In addition, it can be stopped while the processor is in Debug mode or Sleep mode (Idle mode).

## Using The Library

The WDT is used to prevent system lockup if the software becomes trapped in a deadlock. It is supplied with VDDCORE. It restarts with initial values on processor reset.

The WDT is built around a 12-bit down counter loaded with the value defined in field PERIOD of the Window Level Register (WDT_WLR). WDT uses slow clock divided by 128 to establish the maximum watchdog period to 16 seconds (with a typical slow clock of 32.768 kHz).

Here is an example code to enable watchdog timer and keep clearing at regular intervals

    WDT_Enable();

    while ( true )
    {
        // Application Code

        WDT_Clear();
    }

## Library Interface

Watchdog Timer peripheral library provides the following interfaces:

Functions

Name | Description
--- | ---
WDT_Initialize | Initializes given instance of the WDT peripheral
WDT_Clear | Restart the WDT counter
WDT_Enable | Enable the WDT counter
WDT_Disable | Disable the WDT counter
WDT_CallbackRegister | Sets the pointer to the function (and it's context) to be called when the Timeout events occur

Data types and constants

Name | Type | Description
--- | --- | ---
WDT_CALLBACK | Typedef | Defines the data type and function signature for the WDT peripheral callback function