The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Wed Nov 08 17:18:06 2017 +0000
Revision:
156:ff21514d8981
Child:
159:7130f322cb7e
Reverting back to release 154 of the mbed library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 156:ff21514d8981 1 /***************************************************************************//**
AnnaBridge 156:ff21514d8981 2 * @file em_wdog.h
AnnaBridge 156:ff21514d8981 3 * @brief Watchdog (WDOG) peripheral API
AnnaBridge 156:ff21514d8981 4 * @version 5.1.2
AnnaBridge 156:ff21514d8981 5 *******************************************************************************
AnnaBridge 156:ff21514d8981 6 * @section License
AnnaBridge 156:ff21514d8981 7 * <b>Copyright 2016 Silicon Laboratories, Inc. http://www.silabs.com</b>
AnnaBridge 156:ff21514d8981 8 *******************************************************************************
AnnaBridge 156:ff21514d8981 9 *
AnnaBridge 156:ff21514d8981 10 * Permission is granted to anyone to use this software for any purpose,
AnnaBridge 156:ff21514d8981 11 * including commercial applications, and to alter it and redistribute it
AnnaBridge 156:ff21514d8981 12 * freely, subject to the following restrictions:
AnnaBridge 156:ff21514d8981 13 *
AnnaBridge 156:ff21514d8981 14 * 1. The origin of this software must not be misrepresented; you must not
AnnaBridge 156:ff21514d8981 15 * claim that you wrote the original software.
AnnaBridge 156:ff21514d8981 16 * 2. Altered source versions must be plainly marked as such, and must not be
AnnaBridge 156:ff21514d8981 17 * misrepresented as being the original software.
AnnaBridge 156:ff21514d8981 18 * 3. This notice may not be removed or altered from any source distribution.
AnnaBridge 156:ff21514d8981 19 *
AnnaBridge 156:ff21514d8981 20 * DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Silicon Labs has no
AnnaBridge 156:ff21514d8981 21 * obligation to support this Software. Silicon Labs is providing the
AnnaBridge 156:ff21514d8981 22 * Software "AS IS", with no express or implied warranties of any kind,
AnnaBridge 156:ff21514d8981 23 * including, but not limited to, any implied warranties of merchantability
AnnaBridge 156:ff21514d8981 24 * or fitness for any particular purpose or warranties against infringement
AnnaBridge 156:ff21514d8981 25 * of any proprietary rights of a third party.
AnnaBridge 156:ff21514d8981 26 *
AnnaBridge 156:ff21514d8981 27 * Silicon Labs will not be liable for any consequential, incidental, or
AnnaBridge 156:ff21514d8981 28 * special damages, or any other relief, or for any claim by any third party,
AnnaBridge 156:ff21514d8981 29 * arising from your use of this Software.
AnnaBridge 156:ff21514d8981 30 *
AnnaBridge 156:ff21514d8981 31 ******************************************************************************/
AnnaBridge 156:ff21514d8981 32
AnnaBridge 156:ff21514d8981 33
AnnaBridge 156:ff21514d8981 34 #ifndef EM_WDOG_H
AnnaBridge 156:ff21514d8981 35 #define EM_WDOG_H
AnnaBridge 156:ff21514d8981 36
AnnaBridge 156:ff21514d8981 37 #include "em_device.h"
AnnaBridge 156:ff21514d8981 38 #if defined(WDOG_COUNT) && (WDOG_COUNT > 0)
AnnaBridge 156:ff21514d8981 39
AnnaBridge 156:ff21514d8981 40 #include <stdbool.h>
AnnaBridge 156:ff21514d8981 41
AnnaBridge 156:ff21514d8981 42 #ifdef __cplusplus
AnnaBridge 156:ff21514d8981 43 extern "C" {
AnnaBridge 156:ff21514d8981 44 #endif
AnnaBridge 156:ff21514d8981 45
AnnaBridge 156:ff21514d8981 46 /***************************************************************************//**
AnnaBridge 156:ff21514d8981 47 * @addtogroup emlib
AnnaBridge 156:ff21514d8981 48 * @{
AnnaBridge 156:ff21514d8981 49 ******************************************************************************/
AnnaBridge 156:ff21514d8981 50
AnnaBridge 156:ff21514d8981 51 /***************************************************************************//**
AnnaBridge 156:ff21514d8981 52 * @addtogroup WDOG
AnnaBridge 156:ff21514d8981 53 * @{
AnnaBridge 156:ff21514d8981 54 ******************************************************************************/
AnnaBridge 156:ff21514d8981 55
AnnaBridge 156:ff21514d8981 56 /*******************************************************************************
AnnaBridge 156:ff21514d8981 57 ******************************** ENUMS ************************************
AnnaBridge 156:ff21514d8981 58 ******************************************************************************/
AnnaBridge 156:ff21514d8981 59
AnnaBridge 156:ff21514d8981 60 /** Watchdog clock selection. */
AnnaBridge 156:ff21514d8981 61 typedef enum
AnnaBridge 156:ff21514d8981 62 {
AnnaBridge 156:ff21514d8981 63 wdogClkSelULFRCO = _WDOG_CTRL_CLKSEL_ULFRCO, /**< Ultra low frequency (1 kHz) clock */
AnnaBridge 156:ff21514d8981 64 wdogClkSelLFRCO = _WDOG_CTRL_CLKSEL_LFRCO, /**< Low frequency RC oscillator */
AnnaBridge 156:ff21514d8981 65 wdogClkSelLFXO = _WDOG_CTRL_CLKSEL_LFXO /**< Low frequency crystal oscillator */
AnnaBridge 156:ff21514d8981 66 } WDOG_ClkSel_TypeDef;
AnnaBridge 156:ff21514d8981 67
AnnaBridge 156:ff21514d8981 68 /** Watchdog period selection. */
AnnaBridge 156:ff21514d8981 69 typedef enum
AnnaBridge 156:ff21514d8981 70 {
AnnaBridge 156:ff21514d8981 71 wdogPeriod_9 = 0x0, /**< 9 clock periods */
AnnaBridge 156:ff21514d8981 72 wdogPeriod_17 = 0x1, /**< 17 clock periods */
AnnaBridge 156:ff21514d8981 73 wdogPeriod_33 = 0x2, /**< 33 clock periods */
AnnaBridge 156:ff21514d8981 74 wdogPeriod_65 = 0x3, /**< 65 clock periods */
AnnaBridge 156:ff21514d8981 75 wdogPeriod_129 = 0x4, /**< 129 clock periods */
AnnaBridge 156:ff21514d8981 76 wdogPeriod_257 = 0x5, /**< 257 clock periods */
AnnaBridge 156:ff21514d8981 77 wdogPeriod_513 = 0x6, /**< 513 clock periods */
AnnaBridge 156:ff21514d8981 78 wdogPeriod_1k = 0x7, /**< 1025 clock periods */
AnnaBridge 156:ff21514d8981 79 wdogPeriod_2k = 0x8, /**< 2049 clock periods */
AnnaBridge 156:ff21514d8981 80 wdogPeriod_4k = 0x9, /**< 4097 clock periods */
AnnaBridge 156:ff21514d8981 81 wdogPeriod_8k = 0xA, /**< 8193 clock periods */
AnnaBridge 156:ff21514d8981 82 wdogPeriod_16k = 0xB, /**< 16385 clock periods */
AnnaBridge 156:ff21514d8981 83 wdogPeriod_32k = 0xC, /**< 32769 clock periods */
AnnaBridge 156:ff21514d8981 84 wdogPeriod_64k = 0xD, /**< 65537 clock periods */
AnnaBridge 156:ff21514d8981 85 wdogPeriod_128k = 0xE, /**< 131073 clock periods */
AnnaBridge 156:ff21514d8981 86 wdogPeriod_256k = 0xF /**< 262145 clock periods */
AnnaBridge 156:ff21514d8981 87 } WDOG_PeriodSel_TypeDef;
AnnaBridge 156:ff21514d8981 88
AnnaBridge 156:ff21514d8981 89
AnnaBridge 156:ff21514d8981 90 #if defined( _WDOG_CTRL_WARNSEL_MASK )
AnnaBridge 156:ff21514d8981 91 /** Select watchdog warning timeout period as percentage of timeout. */
AnnaBridge 156:ff21514d8981 92 typedef enum
AnnaBridge 156:ff21514d8981 93 {
AnnaBridge 156:ff21514d8981 94 wdogWarnDisable = 0,
AnnaBridge 156:ff21514d8981 95 wdogWarnTime25pct = 1,
AnnaBridge 156:ff21514d8981 96 wdogWarnTime50pct = 2,
AnnaBridge 156:ff21514d8981 97 wdogWarnTime75pct = 3,
AnnaBridge 156:ff21514d8981 98 } WDOG_WarnSel_TypeDef;
AnnaBridge 156:ff21514d8981 99 #endif
AnnaBridge 156:ff21514d8981 100
AnnaBridge 156:ff21514d8981 101 #if defined( _WDOG_CTRL_WINSEL_MASK )
AnnaBridge 156:ff21514d8981 102 /** Select watchdog illegal window limit. */
AnnaBridge 156:ff21514d8981 103 typedef enum
AnnaBridge 156:ff21514d8981 104 {
AnnaBridge 156:ff21514d8981 105 wdogIllegalWindowDisable = 0,
AnnaBridge 156:ff21514d8981 106 wdogIllegalWindowTime12_5pct = 1,
AnnaBridge 156:ff21514d8981 107 wdogIllegalWindowTime25_0pct = 2,
AnnaBridge 156:ff21514d8981 108 wdogIllegalWindowTime37_5pct = 3,
AnnaBridge 156:ff21514d8981 109 wdogIllegalWindowTime50_0pct = 4,
AnnaBridge 156:ff21514d8981 110 wdogIllegalWindowTime62_5pct = 5,
AnnaBridge 156:ff21514d8981 111 wdogIllegalWindowTime75_0pct = 6,
AnnaBridge 156:ff21514d8981 112 wdogIllegalWindowTime87_5pct = 7,
AnnaBridge 156:ff21514d8981 113 } WDOG_WinSel_TypeDef;
AnnaBridge 156:ff21514d8981 114 #endif
AnnaBridge 156:ff21514d8981 115
AnnaBridge 156:ff21514d8981 116 /*******************************************************************************
AnnaBridge 156:ff21514d8981 117 ******************************* STRUCTS ***********************************
AnnaBridge 156:ff21514d8981 118 ******************************************************************************/
AnnaBridge 156:ff21514d8981 119
AnnaBridge 156:ff21514d8981 120 /** Watchdog initialization structure. */
AnnaBridge 156:ff21514d8981 121 typedef struct
AnnaBridge 156:ff21514d8981 122 {
AnnaBridge 156:ff21514d8981 123 /** Enable watchdog when init completed. */
AnnaBridge 156:ff21514d8981 124 bool enable;
AnnaBridge 156:ff21514d8981 125
AnnaBridge 156:ff21514d8981 126 /** Counter shall keep running during debug halt. */
AnnaBridge 156:ff21514d8981 127 bool debugRun;
AnnaBridge 156:ff21514d8981 128
AnnaBridge 156:ff21514d8981 129 /** Counter shall keep running when in EM2. */
AnnaBridge 156:ff21514d8981 130 bool em2Run;
AnnaBridge 156:ff21514d8981 131
AnnaBridge 156:ff21514d8981 132 /** Counter shall keep running when in EM3. */
AnnaBridge 156:ff21514d8981 133 bool em3Run;
AnnaBridge 156:ff21514d8981 134
AnnaBridge 156:ff21514d8981 135 /** Block EMU from entering EM4. */
AnnaBridge 156:ff21514d8981 136 bool em4Block;
AnnaBridge 156:ff21514d8981 137
AnnaBridge 156:ff21514d8981 138 /** Block SW from disabling LFRCO/LFXO oscillators. */
AnnaBridge 156:ff21514d8981 139 bool swoscBlock;
AnnaBridge 156:ff21514d8981 140
AnnaBridge 156:ff21514d8981 141 /** Block SW from modifying the configuration (a reset is needed to reconfigure). */
AnnaBridge 156:ff21514d8981 142 bool lock;
AnnaBridge 156:ff21514d8981 143
AnnaBridge 156:ff21514d8981 144 /** Clock source to use for watchdog. */
AnnaBridge 156:ff21514d8981 145 WDOG_ClkSel_TypeDef clkSel;
AnnaBridge 156:ff21514d8981 146
AnnaBridge 156:ff21514d8981 147 /** Watchdog timeout period. */
AnnaBridge 156:ff21514d8981 148 WDOG_PeriodSel_TypeDef perSel;
AnnaBridge 156:ff21514d8981 149
AnnaBridge 156:ff21514d8981 150 #if defined( _WDOG_CTRL_WARNSEL_MASK )
AnnaBridge 156:ff21514d8981 151 /** Select warning time as % of the watchdog timeout */
AnnaBridge 156:ff21514d8981 152 WDOG_WarnSel_TypeDef warnSel;
AnnaBridge 156:ff21514d8981 153 #endif
AnnaBridge 156:ff21514d8981 154
AnnaBridge 156:ff21514d8981 155 #if defined( _WDOG_CTRL_WINSEL_MASK )
AnnaBridge 156:ff21514d8981 156 /** Select illegal window time as % of the watchdog timeout */
AnnaBridge 156:ff21514d8981 157 WDOG_WinSel_TypeDef winSel;
AnnaBridge 156:ff21514d8981 158 #endif
AnnaBridge 156:ff21514d8981 159
AnnaBridge 156:ff21514d8981 160 #if defined( _WDOG_CTRL_WDOGRSTDIS_MASK )
AnnaBridge 156:ff21514d8981 161 /** Disable watchdog reset output if true */
AnnaBridge 156:ff21514d8981 162 bool resetDisable;
AnnaBridge 156:ff21514d8981 163 #endif
AnnaBridge 156:ff21514d8981 164
AnnaBridge 156:ff21514d8981 165 } WDOG_Init_TypeDef;
AnnaBridge 156:ff21514d8981 166
AnnaBridge 156:ff21514d8981 167 /** Suggested default config for WDOG init structure. */
AnnaBridge 156:ff21514d8981 168 #if defined( _WDOG_CTRL_WARNSEL_MASK ) \
AnnaBridge 156:ff21514d8981 169 && defined( _WDOG_CTRL_WDOGRSTDIS_MASK ) \
AnnaBridge 156:ff21514d8981 170 && defined( _WDOG_CTRL_WINSEL_MASK )
AnnaBridge 156:ff21514d8981 171 #define WDOG_INIT_DEFAULT \
AnnaBridge 156:ff21514d8981 172 { \
AnnaBridge 156:ff21514d8981 173 true, /* Start watchdog when init done */ \
AnnaBridge 156:ff21514d8981 174 false, /* WDOG not counting during debug halt */ \
AnnaBridge 156:ff21514d8981 175 false, /* WDOG not counting when in EM2 */ \
AnnaBridge 156:ff21514d8981 176 false, /* WDOG not counting when in EM3 */ \
AnnaBridge 156:ff21514d8981 177 false, /* EM4 can be entered */ \
AnnaBridge 156:ff21514d8981 178 false, /* Do not block disabling LFRCO/LFXO in CMU */ \
AnnaBridge 156:ff21514d8981 179 false, /* Do not lock WDOG configuration (if locked,
AnnaBridge 156:ff21514d8981 180 reset needed to unlock) */ \
AnnaBridge 156:ff21514d8981 181 wdogClkSelULFRCO, /* Select 1kHZ WDOG oscillator */ \
AnnaBridge 156:ff21514d8981 182 wdogPeriod_256k, /* Set longest possible timeout period */ \
AnnaBridge 156:ff21514d8981 183 wdogWarnDisable, /* Disable warning interrupt */ \
AnnaBridge 156:ff21514d8981 184 wdogIllegalWindowDisable, /* Disable illegal window interrupt */ \
AnnaBridge 156:ff21514d8981 185 false /* Do not disable reset */ \
AnnaBridge 156:ff21514d8981 186 }
AnnaBridge 156:ff21514d8981 187 #else
AnnaBridge 156:ff21514d8981 188 #define WDOG_INIT_DEFAULT \
AnnaBridge 156:ff21514d8981 189 { \
AnnaBridge 156:ff21514d8981 190 true, /* Start watchdog when init done */ \
AnnaBridge 156:ff21514d8981 191 false, /* WDOG not counting during debug halt */ \
AnnaBridge 156:ff21514d8981 192 false, /* WDOG not counting when in EM2 */ \
AnnaBridge 156:ff21514d8981 193 false, /* WDOG not counting when in EM3 */ \
AnnaBridge 156:ff21514d8981 194 false, /* EM4 can be entered */ \
AnnaBridge 156:ff21514d8981 195 false, /* Do not block disabling LFRCO/LFXO in CMU */ \
AnnaBridge 156:ff21514d8981 196 false, /* Do not lock WDOG configuration (if locked,
AnnaBridge 156:ff21514d8981 197 reset needed to unlock) */ \
AnnaBridge 156:ff21514d8981 198 wdogClkSelULFRCO, /* Select 1kHZ WDOG oscillator */ \
AnnaBridge 156:ff21514d8981 199 wdogPeriod_256k /* Set longest possible timeout period */ \
AnnaBridge 156:ff21514d8981 200 }
AnnaBridge 156:ff21514d8981 201 #endif
AnnaBridge 156:ff21514d8981 202
AnnaBridge 156:ff21514d8981 203
AnnaBridge 156:ff21514d8981 204 /*******************************************************************************
AnnaBridge 156:ff21514d8981 205 ***************************** PROTOTYPES **********************************
AnnaBridge 156:ff21514d8981 206 ******************************************************************************/
AnnaBridge 156:ff21514d8981 207
AnnaBridge 156:ff21514d8981 208 void WDOGn_Enable(WDOG_TypeDef *wdog, bool enable);
AnnaBridge 156:ff21514d8981 209 void WDOGn_Feed(WDOG_TypeDef *wdog);
AnnaBridge 156:ff21514d8981 210 void WDOGn_Init(WDOG_TypeDef *wdog, const WDOG_Init_TypeDef *init);
AnnaBridge 156:ff21514d8981 211 void WDOGn_Lock(WDOG_TypeDef *wdog);
AnnaBridge 156:ff21514d8981 212
AnnaBridge 156:ff21514d8981 213
AnnaBridge 156:ff21514d8981 214 #if defined( _WDOG_IF_MASK )
AnnaBridge 156:ff21514d8981 215 /***************************************************************************//**
AnnaBridge 156:ff21514d8981 216 * @brief
AnnaBridge 156:ff21514d8981 217 * Clear one or more pending WDOG interrupts.
AnnaBridge 156:ff21514d8981 218 *
AnnaBridge 156:ff21514d8981 219 * @param[in] wdog
AnnaBridge 156:ff21514d8981 220 * Pointer to WDOG peripheral register block.
AnnaBridge 156:ff21514d8981 221 *
AnnaBridge 156:ff21514d8981 222 * @param[in] flags
AnnaBridge 156:ff21514d8981 223 * WDOG interrupt sources to clear. Use a set of interrupt flags OR-ed
AnnaBridge 156:ff21514d8981 224 * together to clear multiple interrupt sources.
AnnaBridge 156:ff21514d8981 225 ******************************************************************************/
AnnaBridge 156:ff21514d8981 226 __STATIC_INLINE void WDOGn_IntClear(WDOG_TypeDef *wdog, uint32_t flags)
AnnaBridge 156:ff21514d8981 227 {
AnnaBridge 156:ff21514d8981 228 wdog->IFC = flags;
AnnaBridge 156:ff21514d8981 229 }
AnnaBridge 156:ff21514d8981 230
AnnaBridge 156:ff21514d8981 231 /***************************************************************************//**
AnnaBridge 156:ff21514d8981 232 * @brief
AnnaBridge 156:ff21514d8981 233 * Disable one or more WDOG interrupts.
AnnaBridge 156:ff21514d8981 234 *
AnnaBridge 156:ff21514d8981 235 * @param[in] wdog
AnnaBridge 156:ff21514d8981 236 * Pointer to WDOG peripheral register block.
AnnaBridge 156:ff21514d8981 237 *
AnnaBridge 156:ff21514d8981 238 * @param[in] flags
AnnaBridge 156:ff21514d8981 239 * WDOG interrupt sources to disable. Use a set of interrupt flags OR-ed
AnnaBridge 156:ff21514d8981 240 * together to disable multiple interrupt.
AnnaBridge 156:ff21514d8981 241 ******************************************************************************/
AnnaBridge 156:ff21514d8981 242 __STATIC_INLINE void WDOGn_IntDisable(WDOG_TypeDef *wdog, uint32_t flags)
AnnaBridge 156:ff21514d8981 243 {
AnnaBridge 156:ff21514d8981 244 wdog->IEN &= ~flags;
AnnaBridge 156:ff21514d8981 245 }
AnnaBridge 156:ff21514d8981 246
AnnaBridge 156:ff21514d8981 247 /***************************************************************************//**
AnnaBridge 156:ff21514d8981 248 * @brief
AnnaBridge 156:ff21514d8981 249 * Enable one or more WDOG interrupts.
AnnaBridge 156:ff21514d8981 250 *
AnnaBridge 156:ff21514d8981 251 * @note
AnnaBridge 156:ff21514d8981 252 * Depending on the use, a pending interrupt may already be set prior to
AnnaBridge 156:ff21514d8981 253 * enabling the interrupt. Consider using WDOG_IntClear() prior to enabling
AnnaBridge 156:ff21514d8981 254 * if such a pending interrupt should be ignored.
AnnaBridge 156:ff21514d8981 255 *
AnnaBridge 156:ff21514d8981 256 * @param[in] wdog
AnnaBridge 156:ff21514d8981 257 * Pointer to WDOG peripheral register block.
AnnaBridge 156:ff21514d8981 258 *
AnnaBridge 156:ff21514d8981 259 * @param[in] flags
AnnaBridge 156:ff21514d8981 260 * WDOG interrupt sources to enable. Use a set of interrupt flags OR-ed
AnnaBridge 156:ff21514d8981 261 * together to set multiple interrupt.
AnnaBridge 156:ff21514d8981 262 ******************************************************************************/
AnnaBridge 156:ff21514d8981 263 __STATIC_INLINE void WDOGn_IntEnable(WDOG_TypeDef *wdog, uint32_t flags)
AnnaBridge 156:ff21514d8981 264 {
AnnaBridge 156:ff21514d8981 265 wdog->IEN |= flags;
AnnaBridge 156:ff21514d8981 266 }
AnnaBridge 156:ff21514d8981 267
AnnaBridge 156:ff21514d8981 268 /***************************************************************************//**
AnnaBridge 156:ff21514d8981 269 * @brief
AnnaBridge 156:ff21514d8981 270 * Get pending WDOG interrupt flags.
AnnaBridge 156:ff21514d8981 271 *
AnnaBridge 156:ff21514d8981 272 * @note
AnnaBridge 156:ff21514d8981 273 * The event bits are not cleared by the use of this function.
AnnaBridge 156:ff21514d8981 274 *
AnnaBridge 156:ff21514d8981 275 * @param[in] wdog
AnnaBridge 156:ff21514d8981 276 * Pointer to WDOG peripheral register block.
AnnaBridge 156:ff21514d8981 277 *
AnnaBridge 156:ff21514d8981 278 * @return
AnnaBridge 156:ff21514d8981 279 * Pending WDOG interrupt sources. Returns a set of interrupt flags OR-ed
AnnaBridge 156:ff21514d8981 280 * together for the interrupt sources set.
AnnaBridge 156:ff21514d8981 281 ******************************************************************************/
AnnaBridge 156:ff21514d8981 282 __STATIC_INLINE uint32_t WDOGn_IntGet(WDOG_TypeDef *wdog)
AnnaBridge 156:ff21514d8981 283 {
AnnaBridge 156:ff21514d8981 284 return wdog->IF;
AnnaBridge 156:ff21514d8981 285 }
AnnaBridge 156:ff21514d8981 286
AnnaBridge 156:ff21514d8981 287 /***************************************************************************//**
AnnaBridge 156:ff21514d8981 288 * @brief
AnnaBridge 156:ff21514d8981 289 * Get enabled and pending WDOG interrupt flags.
AnnaBridge 156:ff21514d8981 290 *
AnnaBridge 156:ff21514d8981 291 * @details
AnnaBridge 156:ff21514d8981 292 * Useful for handling more interrupt sources in the same interrupt handler.
AnnaBridge 156:ff21514d8981 293 *
AnnaBridge 156:ff21514d8981 294 * @param[in] wdog
AnnaBridge 156:ff21514d8981 295 * Pointer to WDOG peripheral register block.
AnnaBridge 156:ff21514d8981 296 *
AnnaBridge 156:ff21514d8981 297 * @return
AnnaBridge 156:ff21514d8981 298 * Pending and enabled WDOG interrupt sources. Returns a set of interrupt
AnnaBridge 156:ff21514d8981 299 * flags OR-ed together for the interrupt sources set.
AnnaBridge 156:ff21514d8981 300 ******************************************************************************/
AnnaBridge 156:ff21514d8981 301 __STATIC_INLINE uint32_t WDOGn_IntGetEnabled(WDOG_TypeDef *wdog)
AnnaBridge 156:ff21514d8981 302 {
AnnaBridge 156:ff21514d8981 303 uint32_t tmp;
AnnaBridge 156:ff21514d8981 304
AnnaBridge 156:ff21514d8981 305 tmp = wdog->IEN;
AnnaBridge 156:ff21514d8981 306
AnnaBridge 156:ff21514d8981 307 /* Bitwise AND of pending and enabled interrupt flags. */
AnnaBridge 156:ff21514d8981 308 return wdog->IF & tmp;
AnnaBridge 156:ff21514d8981 309 }
AnnaBridge 156:ff21514d8981 310
AnnaBridge 156:ff21514d8981 311 /***************************************************************************//**
AnnaBridge 156:ff21514d8981 312 * @brief
AnnaBridge 156:ff21514d8981 313 * Set one or more pending WDOG interrupts from SW.
AnnaBridge 156:ff21514d8981 314 *
AnnaBridge 156:ff21514d8981 315 * @param[in] wdog
AnnaBridge 156:ff21514d8981 316 * Pointer to WDOG peripheral register block.
AnnaBridge 156:ff21514d8981 317 *
AnnaBridge 156:ff21514d8981 318 * @param[in] flags
AnnaBridge 156:ff21514d8981 319 * WDOG interrupt sources to set to pending. Use a set of interrupt flags
AnnaBridge 156:ff21514d8981 320 * (WDOG_IFS_nnn).
AnnaBridge 156:ff21514d8981 321 ******************************************************************************/
AnnaBridge 156:ff21514d8981 322 __STATIC_INLINE void WDOGn_IntSet(WDOG_TypeDef *wdog, uint32_t flags)
AnnaBridge 156:ff21514d8981 323 {
AnnaBridge 156:ff21514d8981 324 wdog->IFS = flags;
AnnaBridge 156:ff21514d8981 325 }
AnnaBridge 156:ff21514d8981 326 #endif
AnnaBridge 156:ff21514d8981 327
AnnaBridge 156:ff21514d8981 328
AnnaBridge 156:ff21514d8981 329 /** Default WDOG instance for deprecated functions. */
AnnaBridge 156:ff21514d8981 330 #if !defined(DEFAULT_WDOG)
AnnaBridge 156:ff21514d8981 331 #if defined(WDOG)
AnnaBridge 156:ff21514d8981 332 #define DEFAULT_WDOG WDOG
AnnaBridge 156:ff21514d8981 333 #elif defined(WDOG0)
AnnaBridge 156:ff21514d8981 334 #define DEFAULT_WDOG WDOG0
AnnaBridge 156:ff21514d8981 335 #endif
AnnaBridge 156:ff21514d8981 336 #endif
AnnaBridge 156:ff21514d8981 337
AnnaBridge 156:ff21514d8981 338 /***************************************************************************//**
AnnaBridge 156:ff21514d8981 339 * @brief
AnnaBridge 156:ff21514d8981 340 * Enable/disable the watchdog timer.
AnnaBridge 156:ff21514d8981 341 *
AnnaBridge 156:ff21514d8981 342 * @deprecated
AnnaBridge 156:ff21514d8981 343 * Deprecated function. New code should use @ref WDOGn_Enable().
AnnaBridge 156:ff21514d8981 344 * This function uses @ref DEFAULT_WDOG.
AnnaBridge 156:ff21514d8981 345 *
AnnaBridge 156:ff21514d8981 346 * @param[in] enable
AnnaBridge 156:ff21514d8981 347 * true to enable watchdog, false to disable. Watchdog cannot be disabled if
AnnaBridge 156:ff21514d8981 348 * watchdog has been locked.
AnnaBridge 156:ff21514d8981 349 ******************************************************************************/
AnnaBridge 156:ff21514d8981 350 __STATIC_INLINE void WDOG_Enable(bool enable)
AnnaBridge 156:ff21514d8981 351 {
AnnaBridge 156:ff21514d8981 352 WDOGn_Enable(DEFAULT_WDOG, enable);
AnnaBridge 156:ff21514d8981 353 }
AnnaBridge 156:ff21514d8981 354
AnnaBridge 156:ff21514d8981 355
AnnaBridge 156:ff21514d8981 356 /***************************************************************************//**
AnnaBridge 156:ff21514d8981 357 * @brief
AnnaBridge 156:ff21514d8981 358 * Feed the watchdog.
AnnaBridge 156:ff21514d8981 359 *
AnnaBridge 156:ff21514d8981 360 * @deprecated
AnnaBridge 156:ff21514d8981 361 * Deprecated function. New code should use @ref WDOGn_Feed().
AnnaBridge 156:ff21514d8981 362 * This function uses @ref DEFAULT_WDOG.
AnnaBridge 156:ff21514d8981 363 ******************************************************************************/
AnnaBridge 156:ff21514d8981 364 __STATIC_INLINE void WDOG_Feed(void)
AnnaBridge 156:ff21514d8981 365 {
AnnaBridge 156:ff21514d8981 366 WDOGn_Feed(DEFAULT_WDOG);
AnnaBridge 156:ff21514d8981 367 }
AnnaBridge 156:ff21514d8981 368
AnnaBridge 156:ff21514d8981 369
AnnaBridge 156:ff21514d8981 370 /***************************************************************************//**
AnnaBridge 156:ff21514d8981 371 * @brief
AnnaBridge 156:ff21514d8981 372 * Initialize watchdog (assuming the watchdog configuration has not been
AnnaBridge 156:ff21514d8981 373 * locked).
AnnaBridge 156:ff21514d8981 374 *
AnnaBridge 156:ff21514d8981 375 * @deprecated
AnnaBridge 156:ff21514d8981 376 * Deprecated function. New code should use Use @ref WDOGn_Init().
AnnaBridge 156:ff21514d8981 377 * This function uses @ref DEFAULT_WDOG.
AnnaBridge 156:ff21514d8981 378 *
AnnaBridge 156:ff21514d8981 379 * @param[in] init
AnnaBridge 156:ff21514d8981 380 * Structure holding watchdog configuration. A default setting
AnnaBridge 156:ff21514d8981 381 * #WDOG_INIT_DEFAULT is available for init.
AnnaBridge 156:ff21514d8981 382 ******************************************************************************/
AnnaBridge 156:ff21514d8981 383 __STATIC_INLINE void WDOG_Init(const WDOG_Init_TypeDef *init)
AnnaBridge 156:ff21514d8981 384 {
AnnaBridge 156:ff21514d8981 385 WDOGn_Init(DEFAULT_WDOG, init);
AnnaBridge 156:ff21514d8981 386 }
AnnaBridge 156:ff21514d8981 387
AnnaBridge 156:ff21514d8981 388
AnnaBridge 156:ff21514d8981 389 /***************************************************************************//**
AnnaBridge 156:ff21514d8981 390 * @brief
AnnaBridge 156:ff21514d8981 391 * Lock the watchdog configuration.
AnnaBridge 156:ff21514d8981 392 *
AnnaBridge 156:ff21514d8981 393 * @deprecated
AnnaBridge 156:ff21514d8981 394 * Deprecated function. New code should use @ref WDOGn_Lock().
AnnaBridge 156:ff21514d8981 395 * This function uses @ref DEFAULT_WDOG.
AnnaBridge 156:ff21514d8981 396 ******************************************************************************/
AnnaBridge 156:ff21514d8981 397 __STATIC_INLINE void WDOG_Lock(void)
AnnaBridge 156:ff21514d8981 398 {
AnnaBridge 156:ff21514d8981 399 WDOGn_Lock(DEFAULT_WDOG);
AnnaBridge 156:ff21514d8981 400 }
AnnaBridge 156:ff21514d8981 401
AnnaBridge 156:ff21514d8981 402
AnnaBridge 156:ff21514d8981 403 /** @} (end addtogroup WDOG) */
AnnaBridge 156:ff21514d8981 404 /** @} (end addtogroup emlib) */
AnnaBridge 156:ff21514d8981 405
AnnaBridge 156:ff21514d8981 406 #ifdef __cplusplus
AnnaBridge 156:ff21514d8981 407 }
AnnaBridge 156:ff21514d8981 408 #endif
AnnaBridge 156:ff21514d8981 409
AnnaBridge 156:ff21514d8981 410 #endif /* defined(WDOG_COUNT) && (WDOG_COUNT > 0) */
AnnaBridge 156:ff21514d8981 411 #endif /* EM_WDOG_H */