Jump to main content

##

# 3.1.14 Watchdog Timer

The function of the Watchdog Timer is to provide a mechanism to detect if the internal embedded controller has failed.

When enabled, the Watchdog Timer (WDT) circuit will generate a WDT Event if the user program fails to reload the WDT within a specified length of time known as the WDT Interval.

## Using the Library

The application toggles an LED and keeps refreshing the WDT. User can enter a character on the UART terminal to emulate a lockup situation. The application stops toggling the LED and stops refreshing the WDT upon receiving a character on the UART terminal. After the configured timeout, the WDT timer expires and resets the application

    char wdtDemoMessage[] =
    {
        "\n\r -------------------------------------------------------------"
        "\n\r                           WDT DEMO                           "
        "\n\r -------------------------------------------------------------)"
        "\n\r Enter a character to emulate deadlock "
    };

    char wdtDeadlockMessage[] =
    {
        "\n\r Emulating deadlock................ "
        "\n\r WDT should reset device in 4 seconds "
    };

    int main ( void )
    {
        /* Initialize all modules */
        SYS_Initialize ( NULL );

        UART0_Write(wdtDemoMessage, strlen(wdtDemoMessage));

        SYSTICK_TimerStart();

        WDT_Enable();

        while ( true )
        {
            if(UART0_ReceiverIsReady() == false)
            {
                if(SYSTICK_TimerPeriodHasExpired())
                {
                    LED0_Toggle();
                    WDT_Clear();
                }
            }
            else
            {
                (void)UART0_ReadByte();
                UART0_Write(wdtDeadlockMessage, strlen(wdtDeadlockMessage));
                while(1);
            }
        }

        /* Execution should not come here during normal operation */

        return ( EXIT_FAILURE );

## Library Interface

Functions

Name | Description
--- | ---
WDT_Initialize | Initializes given instance of WDT peripheral.
WDT_Clear | Clears WDT timer
WDT_CountGet | Provides the current WDT count
WDT_Disable | Disables WDT peripheral
WDT_Enable | Enables WDT peripheral
WDT_IsEnabled | Returns true if the WDT is enabled
WDT_isPowerFailWDTEventSet | Indicates if the reset cause was due to WDT timeout or not
WDT_PeriodLoad | Reloads the WDT counter with the given period value
WDT_PowerFailWDTEventClear | Clears the WDT event bit in the Power Fail and Reset Status register
WDT_TimeoutActionSet | Selects the action to be taken when WDT expires
WDT_CallbackRegister | Allows application to register a callback with the WDT peripheral

Data types and constants

Name | Type | Description
--- | --- | ---
WDT_CALLBACK | Typedef | Defines the data type and function signature for the WDT peripheral callback function.
WDT_TIMEOUT_ACTION | Enum | Defines the enums associated with WDT timeout action