NXP's driver library for LPC17xx, ported to mbed's online compiler. Not tested! I had to fix a lot of warings and found a couple of pretty obvious bugs, so the chances are there are more. Original: http://ics.nxp.com/support/documents/microcontrollers/zip/lpc17xx.cmsis.driver.library.zip
include/lpc17xx_wdt.h@0:1063a091a062, 2010-02-17 (annotated)
- Committer:
- igorsk
- Date:
- Wed Feb 17 16:22:39 2010 +0000
- Revision:
- 0:1063a091a062
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
igorsk | 0:1063a091a062 | 1 | /***********************************************************************//** |
igorsk | 0:1063a091a062 | 2 | * @file : lpc17xx_wdt.h |
igorsk | 0:1063a091a062 | 3 | * @brief : Contains all macro definitions and function prototypes |
igorsk | 0:1063a091a062 | 4 | * support for WDT firmware library on LPC17xx |
igorsk | 0:1063a091a062 | 5 | * @version : 1.0 |
igorsk | 0:1063a091a062 | 6 | * @date : 9. April. 2009 |
igorsk | 0:1063a091a062 | 7 | * @author : HieuNguyen |
igorsk | 0:1063a091a062 | 8 | ************************************************************************** |
igorsk | 0:1063a091a062 | 9 | * Software that is described herein is for illustrative purposes only |
igorsk | 0:1063a091a062 | 10 | * which provides customers with programming information regarding the |
igorsk | 0:1063a091a062 | 11 | * products. This software is supplied "AS IS" without any warranties. |
igorsk | 0:1063a091a062 | 12 | * NXP Semiconductors assumes no responsibility or liability for the |
igorsk | 0:1063a091a062 | 13 | * use of the software, conveys no license or title under any patent, |
igorsk | 0:1063a091a062 | 14 | * copyright, or mask work right to the product. NXP Semiconductors |
igorsk | 0:1063a091a062 | 15 | * reserves the right to make changes in the software without |
igorsk | 0:1063a091a062 | 16 | * notification. NXP Semiconductors also make no representation or |
igorsk | 0:1063a091a062 | 17 | * warranty that such application will be suitable for the specified |
igorsk | 0:1063a091a062 | 18 | * use without further testing or modification. |
igorsk | 0:1063a091a062 | 19 | **************************************************************************/ |
igorsk | 0:1063a091a062 | 20 | |
igorsk | 0:1063a091a062 | 21 | /* Peripheral group ----------------------------------------------------------- */ |
igorsk | 0:1063a091a062 | 22 | /** @defgroup WDT |
igorsk | 0:1063a091a062 | 23 | * @ingroup LPC1700CMSIS_FwLib_Drivers |
igorsk | 0:1063a091a062 | 24 | * @{ |
igorsk | 0:1063a091a062 | 25 | */ |
igorsk | 0:1063a091a062 | 26 | |
igorsk | 0:1063a091a062 | 27 | #ifndef LPC17XX_WDT_H_ |
igorsk | 0:1063a091a062 | 28 | #define LPC17XX_WDT_H_ |
igorsk | 0:1063a091a062 | 29 | |
igorsk | 0:1063a091a062 | 30 | /* Includes ------------------------------------------------------------------- */ |
igorsk | 0:1063a091a062 | 31 | #include "cmsis.h" |
igorsk | 0:1063a091a062 | 32 | #include "lpc_types.h" |
igorsk | 0:1063a091a062 | 33 | |
igorsk | 0:1063a091a062 | 34 | |
igorsk | 0:1063a091a062 | 35 | #ifdef __cplusplus |
igorsk | 0:1063a091a062 | 36 | extern "C" |
igorsk | 0:1063a091a062 | 37 | { |
igorsk | 0:1063a091a062 | 38 | #endif |
igorsk | 0:1063a091a062 | 39 | |
igorsk | 0:1063a091a062 | 40 | |
igorsk | 0:1063a091a062 | 41 | /* Private Macros ------------------------------------------------------------- */ |
igorsk | 0:1063a091a062 | 42 | /** @defgroup WDT_Private_Macros |
igorsk | 0:1063a091a062 | 43 | * @{ |
igorsk | 0:1063a091a062 | 44 | */ |
igorsk | 0:1063a091a062 | 45 | |
igorsk | 0:1063a091a062 | 46 | /** @defgroup WDT_REGISTER_BIT_DEFINITIONS |
igorsk | 0:1063a091a062 | 47 | * @{ |
igorsk | 0:1063a091a062 | 48 | */ |
igorsk | 0:1063a091a062 | 49 | /************************** WDT Control **************************/ |
igorsk | 0:1063a091a062 | 50 | /** WDT interrupt enable bit */ |
igorsk | 0:1063a091a062 | 51 | #define WDT_WDMOD_WDEN ((uint32_t)(1<<0)) |
igorsk | 0:1063a091a062 | 52 | /** WDT interrupt enable bit */ |
igorsk | 0:1063a091a062 | 53 | #define WDT_WDMOD_WDRESET ((uint32_t)(1<<1)) |
igorsk | 0:1063a091a062 | 54 | /** WDT time out flag bit */ |
igorsk | 0:1063a091a062 | 55 | #define WDT_WDMOD_WDTOF ((uint32_t)(1<<2)) |
igorsk | 0:1063a091a062 | 56 | /** WDT Time Out flag bit */ |
igorsk | 0:1063a091a062 | 57 | #define WDT_WDMOD_WDINT ((uint32_t)(1<<3)) |
igorsk | 0:1063a091a062 | 58 | /** WDT Mode */ |
igorsk | 0:1063a091a062 | 59 | #define WDT_WDMOD(n) ((uint32_t)(n<<1)) |
igorsk | 0:1063a091a062 | 60 | |
igorsk | 0:1063a091a062 | 61 | /**************************** PRIVATE TYPES ***************************/ |
igorsk | 0:1063a091a062 | 62 | /** Define divider index for microsecond ( us ) */ |
igorsk | 0:1063a091a062 | 63 | #define WDT_US_INDEX ((uint32_t)(1000000)) |
igorsk | 0:1063a091a062 | 64 | /** WDT Time out minimum value */ |
igorsk | 0:1063a091a062 | 65 | #define WDT_TIMEOUT_MIN ((uint32_t)(0xFF)) |
igorsk | 0:1063a091a062 | 66 | /** WDT Time out maximum value */ |
igorsk | 0:1063a091a062 | 67 | #define WDT_TIMEOUT_MAX ((uint32_t)(0xFFFFFFFF)) |
igorsk | 0:1063a091a062 | 68 | |
igorsk | 0:1063a091a062 | 69 | |
igorsk | 0:1063a091a062 | 70 | /**************************** GLOBAL/PUBLIC TYPES ***************************/ |
igorsk | 0:1063a091a062 | 71 | /** Watchdog mode register mask */ |
igorsk | 0:1063a091a062 | 72 | #define WDT_WDMOD_MASK (uint8_t)(0x02) |
igorsk | 0:1063a091a062 | 73 | /** Watchdog timer constant register mask */ |
igorsk | 0:1063a091a062 | 74 | #define WDT_WDTC_MASK (uint8_t)(0xFFFFFFFF) |
igorsk | 0:1063a091a062 | 75 | /** Watchdog feed sequence register mask */ |
igorsk | 0:1063a091a062 | 76 | #define WDT_WDFEED_MASK (uint8_t)(0x000000FF) |
igorsk | 0:1063a091a062 | 77 | /** Watchdog timer value register mask */ |
igorsk | 0:1063a091a062 | 78 | #define WDT_WDCLKSEL_MASK (uint8_t)(0x03) |
igorsk | 0:1063a091a062 | 79 | /** Clock selected from internal RC */ |
igorsk | 0:1063a091a062 | 80 | #define WDT_WDCLKSEL_RC (uint8_t)(0x00) |
igorsk | 0:1063a091a062 | 81 | /** Clock selected from PCLK */ |
igorsk | 0:1063a091a062 | 82 | #define WDT_WDCLKSEL_PCLK (uint8_t)(0x01) |
igorsk | 0:1063a091a062 | 83 | /** Clock selected from external RTC */ |
igorsk | 0:1063a091a062 | 84 | #define WDT_WDCLKSEL_RTC (uint8_t)(0x02) |
igorsk | 0:1063a091a062 | 85 | |
igorsk | 0:1063a091a062 | 86 | /** |
igorsk | 0:1063a091a062 | 87 | * @} |
igorsk | 0:1063a091a062 | 88 | */ |
igorsk | 0:1063a091a062 | 89 | |
igorsk | 0:1063a091a062 | 90 | /** |
igorsk | 0:1063a091a062 | 91 | * @} |
igorsk | 0:1063a091a062 | 92 | */ |
igorsk | 0:1063a091a062 | 93 | |
igorsk | 0:1063a091a062 | 94 | |
igorsk | 0:1063a091a062 | 95 | /* Public Types --------------------------------------------------------------- */ |
igorsk | 0:1063a091a062 | 96 | /** @defgroup WDT_Public_Types |
igorsk | 0:1063a091a062 | 97 | * @{ |
igorsk | 0:1063a091a062 | 98 | */ |
igorsk | 0:1063a091a062 | 99 | |
igorsk | 0:1063a091a062 | 100 | /** @brief Clock source option for WDT */ |
igorsk | 0:1063a091a062 | 101 | typedef enum { |
igorsk | 0:1063a091a062 | 102 | WDT_CLKSRC_IRC = 0, /*!< Clock source from Internal RC oscillator */ |
igorsk | 0:1063a091a062 | 103 | WDT_CLKSRC_PCLK = 1, /*!< Selects the APB peripheral clock (PCLK) */ |
igorsk | 0:1063a091a062 | 104 | WDT_CLKSRC_RTC = 2 /*!< Selects the RTC oscillator */ |
igorsk | 0:1063a091a062 | 105 | } WDT_CLK_OPT; |
igorsk | 0:1063a091a062 | 106 | #define PARAM_WDT_CLK_OPT(OPTION) ((OPTION ==WDT_CLKSRC_IRC)||(OPTION ==WDT_CLKSRC_PCLK)\ |
igorsk | 0:1063a091a062 | 107 | ||(OPTION ==WDT_CLKSRC_RTC)) |
igorsk | 0:1063a091a062 | 108 | /** @brief WDT operation mode */ |
igorsk | 0:1063a091a062 | 109 | typedef enum { |
igorsk | 0:1063a091a062 | 110 | WDT_MODE_INT_ONLY = 0, /*!< Use WDT to generate interrupt only */ |
igorsk | 0:1063a091a062 | 111 | WDT_MODE_RESET = 1 /*!< Use WDT to generate interrupt and reset MCU */ |
igorsk | 0:1063a091a062 | 112 | } WDT_MODE_OPT; |
igorsk | 0:1063a091a062 | 113 | #define PARAM_WDT_MODE_OPT(OPTION) ((OPTION ==WDT_MODE_INT_ONLY)||(OPTION ==WDT_MODE_RESET)) |
igorsk | 0:1063a091a062 | 114 | |
igorsk | 0:1063a091a062 | 115 | /** |
igorsk | 0:1063a091a062 | 116 | * @} |
igorsk | 0:1063a091a062 | 117 | */ |
igorsk | 0:1063a091a062 | 118 | |
igorsk | 0:1063a091a062 | 119 | |
igorsk | 0:1063a091a062 | 120 | /* Public Functions ----------------------------------------------------------- */ |
igorsk | 0:1063a091a062 | 121 | /** @defgroup WDT_Public_Functions |
igorsk | 0:1063a091a062 | 122 | * @{ |
igorsk | 0:1063a091a062 | 123 | */ |
igorsk | 0:1063a091a062 | 124 | |
igorsk | 0:1063a091a062 | 125 | void WDT_Init (uint32_t ClkSrc, uint32_t WDTMode); |
igorsk | 0:1063a091a062 | 126 | void WDT_Start(uint32_t TimeOut); |
igorsk | 0:1063a091a062 | 127 | void WDT_Feed (void); |
igorsk | 0:1063a091a062 | 128 | FlagStatus WDT_ReadTimeOutFlag (void); |
igorsk | 0:1063a091a062 | 129 | void WDT_ClrTimeOutFlag (void); |
igorsk | 0:1063a091a062 | 130 | void WDT_UpdateTimeOut ( uint32_t TimeOut); |
igorsk | 0:1063a091a062 | 131 | uint32_t WDT_GetCurrentCount(void); |
igorsk | 0:1063a091a062 | 132 | |
igorsk | 0:1063a091a062 | 133 | /** |
igorsk | 0:1063a091a062 | 134 | * @} |
igorsk | 0:1063a091a062 | 135 | */ |
igorsk | 0:1063a091a062 | 136 | |
igorsk | 0:1063a091a062 | 137 | #ifdef __cplusplus |
igorsk | 0:1063a091a062 | 138 | } |
igorsk | 0:1063a091a062 | 139 | #endif |
igorsk | 0:1063a091a062 | 140 | |
igorsk | 0:1063a091a062 | 141 | #endif /* LPC17XX_WDT_H_ */ |
igorsk | 0:1063a091a062 | 142 | |
igorsk | 0:1063a091a062 | 143 | /** |
igorsk | 0:1063a091a062 | 144 | * @} |
igorsk | 0:1063a091a062 | 145 | */ |
igorsk | 0:1063a091a062 | 146 | |
igorsk | 0:1063a091a062 | 147 | /* --------------------------------- End Of File ------------------------------ */ |