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

Dependencies:   mbed

Committer:
igorsk
Date:
Wed Feb 17 16:22:39 2010 +0000
Revision:
0:1063a091a062

        

Who changed what in which revision?

UserRevisionLine numberNew 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 ------------------------------ */