CC13xx Driver Library
[watchdog] Watch Dog Timer

Functions

static bool WatchdogRunning (void)
 Determines if the watchdog timer is enabled. More...
 
static void WatchdogEnable (void)
 Enables the watchdog timer. More...
 
static void WatchdogResetEnable (void)
 Enables the watchdog timer reset. More...
 
static void WatchdogResetDisable (void)
 Disables the watchdog timer reset. More...
 
static void WatchdogLock (void)
 Enables the watchdog timer lock mechanism. More...
 
static void WatchdogUnlock (void)
 Disables the watchdog timer lock mechanism. More...
 
static bool WatchdogLockState (void)
 Gets the state of the watchdog timer lock mechanism. More...
 
static void WatchdogReloadSet (uint32_t ui32LoadVal)
 Sets the watchdog timer reload value. More...
 
static uint32_t WatchdogReloadGet (void)
 Gets the watchdog timer reload value. More...
 
static uint32_t WatchdogValueGet (void)
 Gets the current watchdog timer value. More...
 
static void WatchdogIntRegister (void(*pfnHandler)(void))
 Registers an interrupt handler for the watchdog timer interrupt. More...
 
static void WatchdogIntUnregister (void)
 Unregisters an interrupt handler for the watchdog timer interrupt. More...
 
static void WatchdogIntEnable (void)
 Enables the watchdog timer. More...
 
static uint32_t WatchdogIntStatus (void)
 Gets the current watchdog timer interrupt status. More...
 
static void WatchdogIntClear (void)
 Clears the watchdog timer interrupt. More...
 
static void WatchdogIntTypeSet (uint32_t ui32Type)
 Sets the type of interrupt generated by the watchdog. More...
 
static void WatchdogStallEnable (void)
 Enables stalling of the watchdog timer during debug events. More...
 
static void WatchdogStallDisable (void)
 Disables stalling of the watchdog timer during debug events. More...
 

Detailed Description

The watchdog timer (WDT) is used to regain control when the system has failed due to unexpected software behavior. The WDT can generate a non-maskable interrupt (NMI), a regular interrupt, or a reset if the software fails to reload the watchdog before it times out.

WDT has the following features:

After the first time-out event, the 32-bit counter is re-loaded with the value of the Load register, and the timer resumes counting down from that value. If the timer counts down to its zero state again before the first time-out interrupt is cleared, and the reset signal has been enabled, the WDT asserts its reset signal to the system. If the interrupt is cleared before the 32-bit counter reaches its second time-out, the 32-bit counter is loaded with the value in the Load register, and counting resumes from that value.

If Load register is written with a new value while the WDT counter is counting, then the counter is loaded with the new value and continues counting. Writing to the Load register does not clear an active interrupt. An interrupt must be explicitly cleared by clearing the interrupt.

The WDT counter runs at system HF clock divided by 32; however, when in powerdown it runs at LF clock (32 kHz) - if the LF clock to the MCU domain has been enabled (configured by AONWUCMcuPowerDownConfig() ).

API

The API functions can be grouped like this:

Watchdog configuration:

Status:

Interrupt configuration:

Register protection:

Stall configuration for debugging:

Function Documentation

static void WatchdogEnable ( void  )
inlinestatic

Enables the watchdog timer.

This function enables the watchdog timer counter and interrupt.

Once enabled, the watchdog interrupt can only be disabled by a hardware reset.

Note
This function has no effect if the watchdog timer has been locked.
Returns
None
See also
WatchdogLock(), WatchdogUnlock()

Definition at line 138 of file watchdog.h.

Referenced by WatchdogIntEnable().

static void WatchdogIntClear ( void  )
inlinestatic

Clears the watchdog timer interrupt.

The watchdog timer interrupt source is cleared, so that it no longer asserts.

Note
Due to write buffers and synchronizers in the system it may take several clock cycles from a register write clearing an event in a module and until the event is actually cleared in the NVIC of the system CPU. It is recommended to clear the event source early in the interrupt service routine (ISR) to allow the event clear to propagate to the NVIC before returning from the ISR. At the same time, an early event clear allows new events of the same type to be pended instead of ignored if the event is cleared later in the ISR. It is the responsibility of the programmer to make sure that enough time has passed before returning from the ISR to avoid false re-triggering of the cleared event. A simple, although not necessarily optimal, way of clearing an event before returning from the ISR is:
  1. Write to clear event (interrupt source). (buffered write)
  2. Dummy read from the event source module. (making sure the write has propagated)
  3. Wait two system CPU clock cycles (user code or two NOPs). (allowing cleared event to propagate through any synchronizers)
Returns
None

Definition at line 450 of file watchdog.h.

static void WatchdogIntEnable ( void  )
inlinestatic

Enables the watchdog timer.

This function enables the watchdog timer interrupt by calling WatchdogEnable().

Returns
None
See also
WatchdogEnable()

Definition at line 395 of file watchdog.h.

Here is the call graph for this function:

static void WatchdogIntRegister ( void(*)(void)  pfnHandler)
inlinestatic

Registers an interrupt handler for the watchdog timer interrupt.

This function does the actual registering of the interrupt handler. This function also enables the global interrupt in the interrupt controller; the watchdog timer interrupt must be enabled via WatchdogIntEnable(). It is the interrupt handler's responsibility to clear the interrupt source via WatchdogIntClear().

Note
This function registers the standard watchdog interrupt handler. To register the NMI watchdog handler, use IntRegister() to register the handler for the INT_NMI_FAULT interrupt.
Parameters
pfnHandleris a pointer to the function to be called when the watchdog timer interrupt occurs.
Returns
None
See also
IntRegister() for important information about registering interrupt handlers.

Definition at line 337 of file watchdog.h.

Here is the call graph for this function:

static uint32_t WatchdogIntStatus ( void  )
inlinestatic

Gets the current watchdog timer interrupt status.

This function returns the interrupt status for the watchdog timer module.

Returns
Returns the interrupt status.
  • 1 : Watchdog time-out has occurred.
  • 0 : Watchdog time-out has not occurred.
See also
WatchdogIntClear();

Definition at line 415 of file watchdog.h.

static void WatchdogIntTypeSet ( uint32_t  ui32Type)
inlinestatic

Sets the type of interrupt generated by the watchdog.

This function sets the type of interrupt that is generated if the watchdog timer expires.

When configured to generate an NMI, the watchdog interrupt must still be enabled with WatchdogIntEnable(), and it must still be cleared inside the NMI handler with WatchdogIntClear().

Parameters
ui32Typeis the type of interrupt to generate.
Returns
None

Definition at line 477 of file watchdog.h.

static void WatchdogIntUnregister ( void  )
inlinestatic

Unregisters an interrupt handler for the watchdog timer interrupt.

This function does the actual unregistering of the interrupt handler. This function clears the handler to be called when a watchdog timer interrupt occurs. This function also masks off the interrupt in the interrupt controller so that the interrupt handler no longer is called.

Note
This function registers the standard watchdog interrupt handler. To register the NMI watchdog handler, use IntRegister() to register the handler for the INT_NMI_FAULT interrupt.
Returns
None
See also
IntRegister() for important information about registering interrupt handlers.

Definition at line 370 of file watchdog.h.

Here is the call graph for this function:

static void WatchdogLock ( void  )
inlinestatic

Enables the watchdog timer lock mechanism.

This function locks out write access to the watchdog timer configuration registers.

Returns
None

Definition at line 197 of file watchdog.h.

static bool WatchdogLockState ( void  )
inlinestatic

Gets the state of the watchdog timer lock mechanism.

This function returns the lock state of the watchdog timer registers.

Returns
Returns state of lock mechanism.
  • true : Watchdog timer registers are locked.
  • false : Registers are not locked.

Definition at line 237 of file watchdog.h.

static uint32_t WatchdogReloadGet ( void  )
inlinestatic

Gets the watchdog timer reload value.

This function gets the value that is loaded into the watchdog timer when the count reaches zero for the first time.

Returns
None
See also
WatchdogReloadSet()

Definition at line 287 of file watchdog.h.

static void WatchdogReloadSet ( uint32_t  ui32LoadVal)
inlinestatic

Sets the watchdog timer reload value.

This function configures the value to load into the watchdog timer when the count reaches zero for the first time; if the watchdog timer is running when this function is called, then the value is immediately loaded into the watchdog timer counter. If the ui32LoadVal parameter is 0, then an interrupt is immediately generated.

Note
This function has no effect if the watchdog timer has been locked.
Parameters
ui32LoadValis the load value for the watchdog timer.
Returns
None
See also
WatchdogLock(), WatchdogUnlock(), WatchdogReloadGet()

Definition at line 266 of file watchdog.h.

static void WatchdogResetDisable ( void  )
inlinestatic

Disables the watchdog timer reset.

This function disables the capability of the watchdog timer to issue a reset to the processor after a second timeout condition.

Note
This function has no effect if the watchdog timer has been locked.
Returns
None
See also
WatchdogLock(), WatchdogUnlock()

Definition at line 180 of file watchdog.h.

static void WatchdogResetEnable ( void  )
inlinestatic

Enables the watchdog timer reset.

This function enables the capability of the watchdog timer to issue a reset to the processor after a second timeout condition.

Note
This function has no effect if the watchdog timer has been locked.
Returns
None
See also
WatchdogLock(), WatchdogUnlock()

Definition at line 159 of file watchdog.h.

static bool WatchdogRunning ( void  )
inlinestatic

Determines if the watchdog timer is enabled.

This function checks to see if the watchdog timer is enabled.

Returns
Returns status of Watchdog Timer:
  • true : Watchdog timer is enabled.
  • false : Watchdog timer is disabled.

Definition at line 114 of file watchdog.h.

static void WatchdogStallDisable ( void  )
inlinestatic

Disables stalling of the watchdog timer during debug events.

This function disables the debug mode stall of the watchdog timer. By doing so, the watchdog timer continues to count regardless of the processor debug state.

Returns
None

Definition at line 520 of file watchdog.h.

static void WatchdogStallEnable ( void  )
inlinestatic

Enables stalling of the watchdog timer during debug events.

This function allows the watchdog timer to stop counting when the processor is stopped by the debugger. By doing so, the watchdog is prevented from expiring and resetting the system (if reset is enabled). The watchdog instead expires after the appropriate number of processor cycles have been executed while debugging (or at the appropriate time after the processor has been restarted).

Returns
None

Definition at line 502 of file watchdog.h.

static void WatchdogUnlock ( void  )
inlinestatic

Disables the watchdog timer lock mechanism.

This function enables write access to the watchdog timer configuration registers.

Returns
None

Definition at line 217 of file watchdog.h.

static uint32_t WatchdogValueGet ( void  )
inlinestatic

Gets the current watchdog timer value.

This function reads the current value of the watchdog timer.

Returns
Returns the current value of the watchdog timer.

Definition at line 305 of file watchdog.h.

Macro Definition Documentation

#define WATCHDOG_INT_TIMEOUT   0x00000001

Definition at line 86 of file watchdog.h.

Referenced by WatchdogIntClear().

#define WATCHDOG_INT_TYPE_INT   0x00000000

Definition at line 93 of file watchdog.h.

Referenced by WatchdogIntTypeSet().

#define WATCHDOG_INT_TYPE_NMI   0x00000004

Definition at line 94 of file watchdog.h.

Referenced by WatchdogIntTypeSet().

#define WATCHDOG_LOCK_LOCKED   0x00000001

Definition at line 77 of file watchdog.h.

Referenced by WatchdogLock(), and WatchdogLockState().

#define WATCHDOG_LOCK_UNLOCK   0x1ACCE551

Definition at line 78 of file watchdog.h.

Referenced by WatchdogUnlock().

#define WATCHDOG_LOCK_UNLOCKED   0x00000000

Definition at line 76 of file watchdog.h.