EFM32 Happy Gecko Software Documentation  efm32hg-doc-4.2.1

Watchdog (WDOG) Peripheral API

. More...

Data Structures

struct  WDOG_Init_TypeDef
 

Macros

#define WDOG_INIT_DEFAULT
 

Enumerations

enum  WDOG_ClkSel_TypeDef {
  wdogClkSelULFRCO = _WDOG_CTRL_CLKSEL_ULFRCO,
  wdogClkSelLFRCO = _WDOG_CTRL_CLKSEL_LFRCO,
  wdogClkSelLFXO = _WDOG_CTRL_CLKSEL_LFXO
}
 
enum  WDOG_PeriodSel_TypeDef {
  wdogPeriod_9 = 0x0,
  wdogPeriod_17 = 0x1,
  wdogPeriod_33 = 0x2,
  wdogPeriod_65 = 0x3,
  wdogPeriod_129 = 0x4,
  wdogPeriod_257 = 0x5,
  wdogPeriod_513 = 0x6,
  wdogPeriod_1k = 0x7,
  wdogPeriod_2k = 0x8,
  wdogPeriod_4k = 0x9,
  wdogPeriod_8k = 0xA,
  wdogPeriod_16k = 0xB,
  wdogPeriod_32k = 0xC,
  wdogPeriod_64k = 0xD,
  wdogPeriod_128k = 0xE,
  wdogPeriod_256k = 0xF
}
 

Functions

void WDOG_Enable (bool enable)
 Enable/disable the watchdog timer. More...
 
void WDOG_Feed (void)
 Feed the watchdog. More...
 
void WDOG_Init (const WDOG_Init_TypeDef *init)
 Initialize watchdog (assuming the watchdog configuration has not been locked). More...
 
void WDOG_Lock (void)
 Lock the watchdog configuration. More...
 

Detailed Description

Macro Definition Documentation

#define WDOG_INIT_DEFAULT
Value:
{ \
true, /* Start watchdog when init done */ \
false, /* WDOG not counting during debug halt */ \
false, /* WDOG not counting when in EM2 */ \
false, /* WDOG not counting when in EM3 */ \
false, /* EM4 can be entered */ \
false, /* Do not block disabling LFRCO/LFXO in CMU */ \
false, /* Do not lock WDOG configuration (if locked, reset needed to unlock) */ \
wdogClkSelULFRCO, /* Select 1kHZ WDOG oscillator */ \
wdogPeriod_256k /* Set longest possible timeout period */ \
}

Suggested default config for WDOG init structure.

Definition at line 125 of file em_wdog.h.

Enumeration Type Documentation

Watchdog clock selection.

Enumerator
wdogClkSelULFRCO 

Ultra low frequency (1 kHz) clock

wdogClkSelLFRCO 

Low frequency RC oscillator

wdogClkSelLFXO 

Low frequency crystal oscillator

Definition at line 61 of file em_wdog.h.

Watchdog period selection.

Enumerator
wdogPeriod_9 

9 clock periods

wdogPeriod_17 

17 clock periods

wdogPeriod_33 

33 clock periods

wdogPeriod_65 

65 clock periods

wdogPeriod_129 

129 clock periods

wdogPeriod_257 

257 clock periods

wdogPeriod_513 

513 clock periods

wdogPeriod_1k 

1025 clock periods

wdogPeriod_2k 

2049 clock periods

wdogPeriod_4k 

4097 clock periods

wdogPeriod_8k 

8193 clock periods

wdogPeriod_16k 

16385 clock periods

wdogPeriod_32k 

32769 clock periods

wdogPeriod_64k 

65537 clock periods

wdogPeriod_128k 

131073 clock periods

wdogPeriod_256k 

262145 clock periods

Definition at line 69 of file em_wdog.h.

Function Documentation

void WDOG_Enable ( bool  enable)
Note
This function modifies the WDOG CTRL register which requires synchronization into the low frequency domain. If this register is modified before a previous update to the same register has completed, this function will stall until the previous synchronization has completed.
Parameters
[in]enabletrue to enable watchdog, false to disable. Watchdog cannot be disabled if watchdog has been locked.

Definition at line 75 of file em_wdog.c.

References _WDOG_CTRL_EN_SHIFT, BUS_RegBitWrite(), WDOG, and WDOG_SYNCBUSY_CTRL.

void WDOG_Feed ( void  )

When the watchdog is activated, it must be fed (ie clearing the counter) before it reaches the defined timeout period. Otherwise, the watchdog will generate a reset.

Definition at line 97 of file em_wdog.c.

References WDOG, WDOG_CMD_CLEAR, WDOG_CTRL_EN, WDOG_SYNCBUSY_CMD, and WDOG_SYNCBUSY_CTRL.

void WDOG_Init ( const WDOG_Init_TypeDef init)
Note
This function modifies the WDOG CTRL register which requires synchronization into the low frequency domain. If this register is modified before a previous update to the same register has completed, this function will stall until the previous synchronization has completed.
Parameters
[in]initStructure holding watchdog configuration. A default setting WDOG_INIT_DEFAULT is available for init.

Definition at line 137 of file em_wdog.c.

References _WDOG_CTRL_CLKSEL_SHIFT, _WDOG_CTRL_LOCK_SHIFT, _WDOG_CTRL_PERSEL_SHIFT, BUS_RegBitWrite(), WDOG_Init_TypeDef::clkSel, WDOG_Init_TypeDef::debugRun, WDOG_Init_TypeDef::em2Run, WDOG_Init_TypeDef::em3Run, WDOG_Init_TypeDef::em4Block, WDOG_Init_TypeDef::enable, WDOG_Init_TypeDef::lock, WDOG_Init_TypeDef::perSel, WDOG_Init_TypeDef::swoscBlock, WDOG, WDOG_CTRL_DEBUGRUN, WDOG_CTRL_EM2RUN, WDOG_CTRL_EM3RUN, WDOG_CTRL_EM4BLOCK, WDOG_CTRL_EN, WDOG_CTRL_SWOSCBLOCK, WDOG_Lock(), and WDOG_SYNCBUSY_CTRL.

void WDOG_Lock ( void  )

This prevents errors from overwriting the watchdog configuration, possibly disabling it. Only a reset can unlock the watchdog config, once locked.

If the LFRCO or LFXO clocks are used to clock the watchdog, one should consider using the option of inhibiting those clocks to be disabled, please see the WDOG_Enable() init structure.

Note
This function modifies the WDOG CTRL register which requires synchronization into the low frequency domain. If this register is modified before a previous update to the same register has completed, this function will stall until the previous synchronization has completed.

Definition at line 218 of file em_wdog.c.

References _WDOG_CTRL_LOCK_SHIFT, BUS_RegBitWrite(), WDOG, and WDOG_SYNCBUSY_CTRL.

Referenced by WDOG_Init().