Date: March 20, 2011 This library is created from "LPC17xx CMSIS-Compliant Standard Peripheral Firmware Driver Library (GNU, Keil, IAR) (Jan 28, 2011)", available from NXP's website, under "All microcontrollers support documents" [[http://ics.nxp.com/support/documents/microcontrollers/?type=software]] You will need to follow [[/projects/libraries/svn/mbed/trunk/LPC1768/LPC17xx.h]] while using this library Examples provided here [[/users/frank26080115/programs/LPC1700CMSIS_Examples/]] The beautiful thing is that NXP does not place copyright protection on any of the files in here Only a few modifications are made to make it compile with the mbed online compiler, I fixed some warnings as well. This is untested as of March 20, 2011 Forum post about this library: [[/forum/mbed/topic/2030/]]

Committer:
frank26080115
Date:
Sun Mar 20 18:45:15 2011 +0000
Revision:
0:84d7747641aa

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
frank26080115 0:84d7747641aa 1 /***********************************************************************//**
frank26080115 0:84d7747641aa 2 * @file lpc17xx_timer.h
frank26080115 0:84d7747641aa 3 * @brief Contains all functions support for Timer firmware library on LPC17xx
frank26080115 0:84d7747641aa 4 * @version 2.0
frank26080115 0:84d7747641aa 5 * @date 21. May. 2010
frank26080115 0:84d7747641aa 6 * @author NXP MCU SW Application Team
frank26080115 0:84d7747641aa 7 **************************************************************************
frank26080115 0:84d7747641aa 8 * Software that is described herein is for illustrative purposes only
frank26080115 0:84d7747641aa 9 * which provides customers with programming information regarding the
frank26080115 0:84d7747641aa 10 * products. This software is supplied "AS IS" without any warranties.
frank26080115 0:84d7747641aa 11 * NXP Semiconductors assumes no responsibility or liability for the
frank26080115 0:84d7747641aa 12 * use of the software, conveys no license or title under any patent,
frank26080115 0:84d7747641aa 13 * copyright, or mask work right to the product. NXP Semiconductors
frank26080115 0:84d7747641aa 14 * reserves the right to make changes in the software without
frank26080115 0:84d7747641aa 15 * notification. NXP Semiconductors also make no representation or
frank26080115 0:84d7747641aa 16 * warranty that such application will be suitable for the specified
frank26080115 0:84d7747641aa 17 * use without further testing or modification.
frank26080115 0:84d7747641aa 18 **********************************************************************/
frank26080115 0:84d7747641aa 19
frank26080115 0:84d7747641aa 20 /* Peripheral group ----------------------------------------------------------- */
frank26080115 0:84d7747641aa 21 /** @defgroup TIM TIM
frank26080115 0:84d7747641aa 22 * @ingroup LPC1700CMSIS_FwLib_Drivers
frank26080115 0:84d7747641aa 23 * @{
frank26080115 0:84d7747641aa 24 */
frank26080115 0:84d7747641aa 25
frank26080115 0:84d7747641aa 26 #ifndef __LPC17XX_TIMER_H_
frank26080115 0:84d7747641aa 27 #define __LPC17XX_TIMER_H_
frank26080115 0:84d7747641aa 28
frank26080115 0:84d7747641aa 29 /* Includes ------------------------------------------------------------------- */
frank26080115 0:84d7747641aa 30 #include "LPC17xx.h"
frank26080115 0:84d7747641aa 31 #include "lpc_types.h"
frank26080115 0:84d7747641aa 32
frank26080115 0:84d7747641aa 33 #ifdef __cplusplus
frank26080115 0:84d7747641aa 34 extern "C"
frank26080115 0:84d7747641aa 35 {
frank26080115 0:84d7747641aa 36 #endif
frank26080115 0:84d7747641aa 37
frank26080115 0:84d7747641aa 38 /* Private Macros ------------------------------------------------------------- */
frank26080115 0:84d7747641aa 39 /** @defgroup TIM_Private_Macros TIM Private Macros
frank26080115 0:84d7747641aa 40 * @{
frank26080115 0:84d7747641aa 41 */
frank26080115 0:84d7747641aa 42
frank26080115 0:84d7747641aa 43 /* --------------------- BIT DEFINITIONS -------------------------------------- */
frank26080115 0:84d7747641aa 44 /**********************************************************************
frank26080115 0:84d7747641aa 45 ** Interrupt information
frank26080115 0:84d7747641aa 46 **********************************************************************/
frank26080115 0:84d7747641aa 47 /** Macro to clean interrupt pending */
frank26080115 0:84d7747641aa 48 #define TIM_IR_CLR(n) _BIT(n)
frank26080115 0:84d7747641aa 49
frank26080115 0:84d7747641aa 50 /**********************************************************************
frank26080115 0:84d7747641aa 51 ** Timer interrupt register definitions
frank26080115 0:84d7747641aa 52 **********************************************************************/
frank26080115 0:84d7747641aa 53 /** Macro for getting a timer match interrupt bit */
frank26080115 0:84d7747641aa 54 #define TIM_MATCH_INT(n) (_BIT(n & 0x0F))
frank26080115 0:84d7747641aa 55 /** Macro for getting a capture event interrupt bit */
frank26080115 0:84d7747641aa 56 #define TIM_CAP_INT(n) (_BIT(((n & 0x0F) + 4)))
frank26080115 0:84d7747641aa 57
frank26080115 0:84d7747641aa 58 /**********************************************************************
frank26080115 0:84d7747641aa 59 * Timer control register definitions
frank26080115 0:84d7747641aa 60 **********************************************************************/
frank26080115 0:84d7747641aa 61 /** Timer/counter enable bit */
frank26080115 0:84d7747641aa 62 #define TIM_ENABLE ((uint32_t)(1<<0))
frank26080115 0:84d7747641aa 63 /** Timer/counter reset bit */
frank26080115 0:84d7747641aa 64 #define TIM_RESET ((uint32_t)(1<<1))
frank26080115 0:84d7747641aa 65 /** Timer control bit mask */
frank26080115 0:84d7747641aa 66 #define TIM_TCR_MASKBIT ((uint32_t)(3))
frank26080115 0:84d7747641aa 67
frank26080115 0:84d7747641aa 68 /**********************************************************************
frank26080115 0:84d7747641aa 69 * Timer match control register definitions
frank26080115 0:84d7747641aa 70 **********************************************************************/
frank26080115 0:84d7747641aa 71 /** Bit location for interrupt on MRx match, n = 0 to 3 */
frank26080115 0:84d7747641aa 72 #define TIM_INT_ON_MATCH(n) (_BIT((n * 3)))
frank26080115 0:84d7747641aa 73 /** Bit location for reset on MRx match, n = 0 to 3 */
frank26080115 0:84d7747641aa 74 #define TIM_RESET_ON_MATCH(n) (_BIT(((n * 3) + 1)))
frank26080115 0:84d7747641aa 75 /** Bit location for stop on MRx match, n = 0 to 3 */
frank26080115 0:84d7747641aa 76 #define TIM_STOP_ON_MATCH(n) (_BIT(((n * 3) + 2)))
frank26080115 0:84d7747641aa 77 /** Timer Match control bit mask */
frank26080115 0:84d7747641aa 78 #define TIM_MCR_MASKBIT ((uint32_t)(0x0FFF))
frank26080115 0:84d7747641aa 79 /** Timer Match control bit mask for specific channel*/
frank26080115 0:84d7747641aa 80 #define TIM_MCR_CHANNEL_MASKBIT(n) ((uint32_t)(7<<(n*3)))
frank26080115 0:84d7747641aa 81
frank26080115 0:84d7747641aa 82 /**********************************************************************
frank26080115 0:84d7747641aa 83 * Timer capture control register definitions
frank26080115 0:84d7747641aa 84 **********************************************************************/
frank26080115 0:84d7747641aa 85 /** Bit location for CAP.n on CRx rising edge, n = 0 to 3 */
frank26080115 0:84d7747641aa 86 #define TIM_CAP_RISING(n) (_BIT((n * 3)))
frank26080115 0:84d7747641aa 87 /** Bit location for CAP.n on CRx falling edge, n = 0 to 3 */
frank26080115 0:84d7747641aa 88 #define TIM_CAP_FALLING(n) (_BIT(((n * 3) + 1)))
frank26080115 0:84d7747641aa 89 /** Bit location for CAP.n on CRx interrupt enable, n = 0 to 3 */
frank26080115 0:84d7747641aa 90 #define TIM_INT_ON_CAP(n) (_BIT(((n * 3) + 2)))
frank26080115 0:84d7747641aa 91 /** Mask bit for rising and falling edge bit */
frank26080115 0:84d7747641aa 92 #define TIM_EDGE_MASK(n) (_SBF((n * 3), 0x03))
frank26080115 0:84d7747641aa 93 /** Timer capture control bit mask */
frank26080115 0:84d7747641aa 94 #define TIM_CCR_MASKBIT ((uint32_t)(0x3F))
frank26080115 0:84d7747641aa 95 /** Timer Capture control bit mask for specific channel*/
frank26080115 0:84d7747641aa 96 #define TIM_CCR_CHANNEL_MASKBIT(n) ((uint32_t)(7<<(n*3)))
frank26080115 0:84d7747641aa 97
frank26080115 0:84d7747641aa 98 /**********************************************************************
frank26080115 0:84d7747641aa 99 * Timer external match register definitions
frank26080115 0:84d7747641aa 100 **********************************************************************/
frank26080115 0:84d7747641aa 101 /** Bit location for output state change of MAT.n when external match
frank26080115 0:84d7747641aa 102 happens, n = 0 to 3 */
frank26080115 0:84d7747641aa 103 #define TIM_EM(n) _BIT(n)
frank26080115 0:84d7747641aa 104 /** Output state change of MAT.n when external match happens: no change */
frank26080115 0:84d7747641aa 105 #define TIM_EM_NOTHING ((uint8_t)(0x0))
frank26080115 0:84d7747641aa 106 /** Output state change of MAT.n when external match happens: low */
frank26080115 0:84d7747641aa 107 #define TIM_EM_LOW ((uint8_t)(0x1))
frank26080115 0:84d7747641aa 108 /** Output state change of MAT.n when external match happens: high */
frank26080115 0:84d7747641aa 109 #define TIM_EM_HIGH ((uint8_t)(0x2))
frank26080115 0:84d7747641aa 110 /** Output state change of MAT.n when external match happens: toggle */
frank26080115 0:84d7747641aa 111 #define TIM_EM_TOGGLE ((uint8_t)(0x3))
frank26080115 0:84d7747641aa 112 /** Macro for setting for the MAT.n change state bits */
frank26080115 0:84d7747641aa 113 #define TIM_EM_SET(n,s) (_SBF(((n << 1) + 4), (s & 0x03)))
frank26080115 0:84d7747641aa 114 /** Mask for the MAT.n change state bits */
frank26080115 0:84d7747641aa 115 #define TIM_EM_MASK(n) (_SBF(((n << 1) + 4), 0x03))
frank26080115 0:84d7747641aa 116 /** Timer external match bit mask */
frank26080115 0:84d7747641aa 117 #define TIM_EMR_MASKBIT 0x0FFF
frank26080115 0:84d7747641aa 118
frank26080115 0:84d7747641aa 119 /**********************************************************************
frank26080115 0:84d7747641aa 120 * Timer Count Control Register definitions
frank26080115 0:84d7747641aa 121 **********************************************************************/
frank26080115 0:84d7747641aa 122 /** Mask to get the Counter/timer mode bits */
frank26080115 0:84d7747641aa 123 #define TIM_CTCR_MODE_MASK 0x3
frank26080115 0:84d7747641aa 124 /** Mask to get the count input select bits */
frank26080115 0:84d7747641aa 125 #define TIM_CTCR_INPUT_MASK 0xC
frank26080115 0:84d7747641aa 126 /** Timer Count control bit mask */
frank26080115 0:84d7747641aa 127 #define TIM_CTCR_MASKBIT 0xF
frank26080115 0:84d7747641aa 128 #define TIM_COUNTER_MODE ((uint8_t)(1))
frank26080115 0:84d7747641aa 129
frank26080115 0:84d7747641aa 130
frank26080115 0:84d7747641aa 131 /* ---------------- CHECK PARAMETER DEFINITIONS ---------------------------- */
frank26080115 0:84d7747641aa 132 /** Macro to determine if it is valid TIMER peripheral */
frank26080115 0:84d7747641aa 133 #define PARAM_TIMx(n) ((((uint32_t *)n)==((uint32_t *)LPC_TIM0)) || (((uint32_t *)n)==((uint32_t *)LPC_TIM1)) \
frank26080115 0:84d7747641aa 134 || (((uint32_t *)n)==((uint32_t *)LPC_TIM2)) || (((uint32_t *)n)==((uint32_t *)LPC_TIM3)))
frank26080115 0:84d7747641aa 135
frank26080115 0:84d7747641aa 136 /* Macro check interrupt type */
frank26080115 0:84d7747641aa 137 #define PARAM_TIM_INT_TYPE(TYPE) ((TYPE ==TIM_MR0_INT)||(TYPE ==TIM_MR1_INT)\
frank26080115 0:84d7747641aa 138 ||(TYPE ==TIM_MR2_INT)||(TYPE ==TIM_MR3_INT)\
frank26080115 0:84d7747641aa 139 ||(TYPE ==TIM_CR0_INT)||(TYPE ==TIM_CR1_INT))
frank26080115 0:84d7747641aa 140
frank26080115 0:84d7747641aa 141 /* Macro check TIMER mode */
frank26080115 0:84d7747641aa 142 #define PARAM_TIM_MODE_OPT(MODE) ((MODE == TIM_TIMER_MODE)||(MODE == TIM_COUNTER_RISING_MODE)\
frank26080115 0:84d7747641aa 143 || (MODE == TIM_COUNTER_RISING_MODE)||(MODE == TIM_COUNTER_RISING_MODE))
frank26080115 0:84d7747641aa 144
frank26080115 0:84d7747641aa 145 /* Macro check TIMER prescale value */
frank26080115 0:84d7747641aa 146 #define PARAM_TIM_PRESCALE_OPT(OPT) ((OPT == TIM_PRESCALE_TICKVAL)||(OPT == TIM_PRESCALE_USVAL))
frank26080115 0:84d7747641aa 147
frank26080115 0:84d7747641aa 148 /* Macro check TIMER counter intput mode */
frank26080115 0:84d7747641aa 149 #define PARAM_TIM_COUNTER_INPUT_OPT(OPT) ((OPT == TIM_COUNTER_INCAP0)||(OPT == TIM_COUNTER_INCAP1))
frank26080115 0:84d7747641aa 150
frank26080115 0:84d7747641aa 151 /* Macro check TIMER external match mode */
frank26080115 0:84d7747641aa 152 #define PARAM_TIM_EXTMATCH_OPT(OPT) ((OPT == TIM_EXTMATCH_NOTHING)||(OPT == TIM_EXTMATCH_LOW)\
frank26080115 0:84d7747641aa 153 ||(OPT == TIM_EXTMATCH_HIGH)||(OPT == TIM_EXTMATCH_TOGGLE))
frank26080115 0:84d7747641aa 154
frank26080115 0:84d7747641aa 155 /* Macro check TIMER external match mode */
frank26080115 0:84d7747641aa 156 #define PARAM_TIM_CAP_MODE_OPT(OPT) ((OPT == TIM_CAPTURE_NONE)||(OPT == TIM_CAPTURE_RISING) \
frank26080115 0:84d7747641aa 157 ||(OPT == TIM_CAPTURE_FALLING)||(OPT == TIM_CAPTURE_ANY))
frank26080115 0:84d7747641aa 158
frank26080115 0:84d7747641aa 159 /**
frank26080115 0:84d7747641aa 160 * @}
frank26080115 0:84d7747641aa 161 */
frank26080115 0:84d7747641aa 162
frank26080115 0:84d7747641aa 163
frank26080115 0:84d7747641aa 164 /* Public Types --------------------------------------------------------------- */
frank26080115 0:84d7747641aa 165 /** @defgroup TIM_Public_Types TIM Public Types
frank26080115 0:84d7747641aa 166 * @{
frank26080115 0:84d7747641aa 167 */
frank26080115 0:84d7747641aa 168
frank26080115 0:84d7747641aa 169 /***********************************************************************
frank26080115 0:84d7747641aa 170 * Timer device enumeration
frank26080115 0:84d7747641aa 171 **********************************************************************/
frank26080115 0:84d7747641aa 172 /** @brief interrupt type */
frank26080115 0:84d7747641aa 173 typedef enum
frank26080115 0:84d7747641aa 174 {
frank26080115 0:84d7747641aa 175 TIM_MR0_INT =0, /*!< interrupt for Match channel 0*/
frank26080115 0:84d7747641aa 176 TIM_MR1_INT =1, /*!< interrupt for Match channel 1*/
frank26080115 0:84d7747641aa 177 TIM_MR2_INT =2, /*!< interrupt for Match channel 2*/
frank26080115 0:84d7747641aa 178 TIM_MR3_INT =3, /*!< interrupt for Match channel 3*/
frank26080115 0:84d7747641aa 179 TIM_CR0_INT =4, /*!< interrupt for Capture channel 0*/
frank26080115 0:84d7747641aa 180 TIM_CR1_INT =5, /*!< interrupt for Capture channel 1*/
frank26080115 0:84d7747641aa 181 }TIM_INT_TYPE;
frank26080115 0:84d7747641aa 182
frank26080115 0:84d7747641aa 183 /** @brief Timer/counter operating mode */
frank26080115 0:84d7747641aa 184 typedef enum
frank26080115 0:84d7747641aa 185 {
frank26080115 0:84d7747641aa 186 TIM_TIMER_MODE = 0, /*!< Timer mode */
frank26080115 0:84d7747641aa 187 TIM_COUNTER_RISING_MODE, /*!< Counter rising mode */
frank26080115 0:84d7747641aa 188 TIM_COUNTER_FALLING_MODE, /*!< Counter falling mode */
frank26080115 0:84d7747641aa 189 TIM_COUNTER_ANY_MODE /*!< Counter on both edges */
frank26080115 0:84d7747641aa 190 } TIM_MODE_OPT;
frank26080115 0:84d7747641aa 191
frank26080115 0:84d7747641aa 192 /** @brief Timer/Counter prescale option */
frank26080115 0:84d7747641aa 193 typedef enum
frank26080115 0:84d7747641aa 194 {
frank26080115 0:84d7747641aa 195 TIM_PRESCALE_TICKVAL = 0, /*!< Prescale in absolute value */
frank26080115 0:84d7747641aa 196 TIM_PRESCALE_USVAL /*!< Prescale in microsecond value */
frank26080115 0:84d7747641aa 197 } TIM_PRESCALE_OPT;
frank26080115 0:84d7747641aa 198
frank26080115 0:84d7747641aa 199 /** @brief Counter input option */
frank26080115 0:84d7747641aa 200 typedef enum
frank26080115 0:84d7747641aa 201 {
frank26080115 0:84d7747641aa 202 TIM_COUNTER_INCAP0 = 0, /*!< CAPn.0 input pin for TIMERn */
frank26080115 0:84d7747641aa 203 TIM_COUNTER_INCAP1, /*!< CAPn.1 input pin for TIMERn */
frank26080115 0:84d7747641aa 204 } TIM_COUNTER_INPUT_OPT;
frank26080115 0:84d7747641aa 205
frank26080115 0:84d7747641aa 206 /** @brief Timer/Counter external match option */
frank26080115 0:84d7747641aa 207 typedef enum
frank26080115 0:84d7747641aa 208 {
frank26080115 0:84d7747641aa 209 TIM_EXTMATCH_NOTHING = 0, /*!< Do nothing for external output pin if match */
frank26080115 0:84d7747641aa 210 TIM_EXTMATCH_LOW, /*!< Force external output pin to low if match */
frank26080115 0:84d7747641aa 211 TIM_EXTMATCH_HIGH, /*!< Force external output pin to high if match */
frank26080115 0:84d7747641aa 212 TIM_EXTMATCH_TOGGLE /*!< Toggle external output pin if match */
frank26080115 0:84d7747641aa 213 }TIM_EXTMATCH_OPT;
frank26080115 0:84d7747641aa 214
frank26080115 0:84d7747641aa 215 /** @brief Timer/counter capture mode options */
frank26080115 0:84d7747641aa 216 typedef enum {
frank26080115 0:84d7747641aa 217 TIM_CAPTURE_NONE = 0, /*!< No Capture */
frank26080115 0:84d7747641aa 218 TIM_CAPTURE_RISING, /*!< Rising capture mode */
frank26080115 0:84d7747641aa 219 TIM_CAPTURE_FALLING, /*!< Falling capture mode */
frank26080115 0:84d7747641aa 220 TIM_CAPTURE_ANY /*!< On both edges */
frank26080115 0:84d7747641aa 221 } TIM_CAP_MODE_OPT;
frank26080115 0:84d7747641aa 222
frank26080115 0:84d7747641aa 223 /** @brief Configuration structure in TIMER mode */
frank26080115 0:84d7747641aa 224 typedef struct
frank26080115 0:84d7747641aa 225 {
frank26080115 0:84d7747641aa 226
frank26080115 0:84d7747641aa 227 uint8_t PrescaleOption; /**< Timer Prescale option, should be:
frank26080115 0:84d7747641aa 228 - TIM_PRESCALE_TICKVAL: Prescale in absolute value
frank26080115 0:84d7747641aa 229 - TIM_PRESCALE_USVAL: Prescale in microsecond value
frank26080115 0:84d7747641aa 230 */
frank26080115 0:84d7747641aa 231 uint8_t Reserved[3]; /**< Reserved */
frank26080115 0:84d7747641aa 232 uint32_t PrescaleValue; /**< Prescale value */
frank26080115 0:84d7747641aa 233 } TIM_TIMERCFG_Type;
frank26080115 0:84d7747641aa 234
frank26080115 0:84d7747641aa 235 /** @brief Configuration structure in COUNTER mode */
frank26080115 0:84d7747641aa 236 typedef struct {
frank26080115 0:84d7747641aa 237
frank26080115 0:84d7747641aa 238 uint8_t CounterOption; /**< Counter Option, should be:
frank26080115 0:84d7747641aa 239 - TIM_COUNTER_INCAP0: CAPn.0 input pin for TIMERn
frank26080115 0:84d7747641aa 240 - TIM_COUNTER_INCAP1: CAPn.1 input pin for TIMERn
frank26080115 0:84d7747641aa 241 */
frank26080115 0:84d7747641aa 242 uint8_t CountInputSelect;
frank26080115 0:84d7747641aa 243 uint8_t Reserved[2];
frank26080115 0:84d7747641aa 244 } TIM_COUNTERCFG_Type;
frank26080115 0:84d7747641aa 245
frank26080115 0:84d7747641aa 246 /** @brief Match channel configuration structure */
frank26080115 0:84d7747641aa 247 typedef struct {
frank26080115 0:84d7747641aa 248 uint8_t MatchChannel; /**< Match channel, should be in range
frank26080115 0:84d7747641aa 249 from 0..3 */
frank26080115 0:84d7747641aa 250 uint8_t IntOnMatch; /**< Interrupt On match, should be:
frank26080115 0:84d7747641aa 251 - ENABLE: Enable this function.
frank26080115 0:84d7747641aa 252 - DISABLE: Disable this function.
frank26080115 0:84d7747641aa 253 */
frank26080115 0:84d7747641aa 254 uint8_t StopOnMatch; /**< Stop On match, should be:
frank26080115 0:84d7747641aa 255 - ENABLE: Enable this function.
frank26080115 0:84d7747641aa 256 - DISABLE: Disable this function.
frank26080115 0:84d7747641aa 257 */
frank26080115 0:84d7747641aa 258 uint8_t ResetOnMatch; /**< Reset On match, should be:
frank26080115 0:84d7747641aa 259 - ENABLE: Enable this function.
frank26080115 0:84d7747641aa 260 - DISABLE: Disable this function.
frank26080115 0:84d7747641aa 261 */
frank26080115 0:84d7747641aa 262
frank26080115 0:84d7747641aa 263 uint8_t ExtMatchOutputType; /**< External Match Output type, should be:
frank26080115 0:84d7747641aa 264 - TIM_EXTMATCH_NOTHING: Do nothing for external output pin if match
frank26080115 0:84d7747641aa 265 - TIM_EXTMATCH_LOW: Force external output pin to low if match
frank26080115 0:84d7747641aa 266 - TIM_EXTMATCH_HIGH: Force external output pin to high if match
frank26080115 0:84d7747641aa 267 - TIM_EXTMATCH_TOGGLE: Toggle external output pin if match.
frank26080115 0:84d7747641aa 268 */
frank26080115 0:84d7747641aa 269 uint8_t Reserved[3]; /** Reserved */
frank26080115 0:84d7747641aa 270 uint32_t MatchValue; /** Match value */
frank26080115 0:84d7747641aa 271 } TIM_MATCHCFG_Type;
frank26080115 0:84d7747641aa 272
frank26080115 0:84d7747641aa 273 /** @brief Capture Input configuration structure */
frank26080115 0:84d7747641aa 274 typedef struct {
frank26080115 0:84d7747641aa 275 uint8_t CaptureChannel; /**< Capture channel, should be in range
frank26080115 0:84d7747641aa 276 from 0..1 */
frank26080115 0:84d7747641aa 277 uint8_t RisingEdge; /**< caption rising edge, should be:
frank26080115 0:84d7747641aa 278 - ENABLE: Enable rising edge.
frank26080115 0:84d7747641aa 279 - DISABLE: Disable this function.
frank26080115 0:84d7747641aa 280 */
frank26080115 0:84d7747641aa 281 uint8_t FallingEdge; /**< caption falling edge, should be:
frank26080115 0:84d7747641aa 282 - ENABLE: Enable falling edge.
frank26080115 0:84d7747641aa 283 - DISABLE: Disable this function.
frank26080115 0:84d7747641aa 284 */
frank26080115 0:84d7747641aa 285 uint8_t IntOnCaption; /**< Interrupt On caption, should be:
frank26080115 0:84d7747641aa 286 - ENABLE: Enable interrupt function.
frank26080115 0:84d7747641aa 287 - DISABLE: Disable this function.
frank26080115 0:84d7747641aa 288 */
frank26080115 0:84d7747641aa 289
frank26080115 0:84d7747641aa 290 } TIM_CAPTURECFG_Type;
frank26080115 0:84d7747641aa 291
frank26080115 0:84d7747641aa 292 /**
frank26080115 0:84d7747641aa 293 * @}
frank26080115 0:84d7747641aa 294 */
frank26080115 0:84d7747641aa 295
frank26080115 0:84d7747641aa 296
frank26080115 0:84d7747641aa 297 /* Public Functions ----------------------------------------------------------- */
frank26080115 0:84d7747641aa 298 /** @defgroup TIM_Public_Functions TIM Public Functions
frank26080115 0:84d7747641aa 299 * @{
frank26080115 0:84d7747641aa 300 */
frank26080115 0:84d7747641aa 301 /* Init/DeInit TIM functions -----------*/
frank26080115 0:84d7747641aa 302 void TIM_Init(LPC_TIM_TypeDef *TIMx, TIM_MODE_OPT TimerCounterMode, void *TIM_ConfigStruct);
frank26080115 0:84d7747641aa 303 void TIM_DeInit(LPC_TIM_TypeDef *TIMx);
frank26080115 0:84d7747641aa 304
frank26080115 0:84d7747641aa 305 /* TIM interrupt functions -------------*/
frank26080115 0:84d7747641aa 306 void TIM_ClearIntPending(LPC_TIM_TypeDef *TIMx, TIM_INT_TYPE IntFlag);
frank26080115 0:84d7747641aa 307 void TIM_ClearIntCapturePending(LPC_TIM_TypeDef *TIMx, TIM_INT_TYPE IntFlag);
frank26080115 0:84d7747641aa 308 FlagStatus TIM_GetIntStatus(LPC_TIM_TypeDef *TIMx, TIM_INT_TYPE IntFlag);
frank26080115 0:84d7747641aa 309 FlagStatus TIM_GetIntCaptureStatus(LPC_TIM_TypeDef *TIMx, TIM_INT_TYPE IntFlag);
frank26080115 0:84d7747641aa 310
frank26080115 0:84d7747641aa 311 /* TIM configuration functions --------*/
frank26080115 0:84d7747641aa 312 void TIM_ConfigStructInit(TIM_MODE_OPT TimerCounterMode, void *TIM_ConfigStruct);
frank26080115 0:84d7747641aa 313 void TIM_ConfigMatch(LPC_TIM_TypeDef *TIMx, TIM_MATCHCFG_Type *TIM_MatchConfigStruct);
frank26080115 0:84d7747641aa 314 void TIM_UpdateMatchValue(LPC_TIM_TypeDef *TIMx,uint8_t MatchChannel, uint32_t MatchValue);
frank26080115 0:84d7747641aa 315 void TIM_SetMatchExt(LPC_TIM_TypeDef *TIMx,TIM_EXTMATCH_OPT ext_match );
frank26080115 0:84d7747641aa 316 void TIM_ConfigCapture(LPC_TIM_TypeDef *TIMx, TIM_CAPTURECFG_Type *TIM_CaptureConfigStruct);
frank26080115 0:84d7747641aa 317 void TIM_Cmd(LPC_TIM_TypeDef *TIMx, FunctionalState NewState);
frank26080115 0:84d7747641aa 318
frank26080115 0:84d7747641aa 319 uint32_t TIM_GetCaptureValue(LPC_TIM_TypeDef *TIMx, TIM_COUNTER_INPUT_OPT CaptureChannel);
frank26080115 0:84d7747641aa 320 void TIM_ResetCounter(LPC_TIM_TypeDef *TIMx);
frank26080115 0:84d7747641aa 321
frank26080115 0:84d7747641aa 322 /**
frank26080115 0:84d7747641aa 323 * @}
frank26080115 0:84d7747641aa 324 */
frank26080115 0:84d7747641aa 325 #ifdef __cplusplus
frank26080115 0:84d7747641aa 326 }
frank26080115 0:84d7747641aa 327 #endif
frank26080115 0:84d7747641aa 328
frank26080115 0:84d7747641aa 329 #endif /* __LPC17XX_TIMER_H_ */
frank26080115 0:84d7747641aa 330
frank26080115 0:84d7747641aa 331 /**
frank26080115 0:84d7747641aa 332 * @}
frank26080115 0:84d7747641aa 333 */
frank26080115 0:84d7747641aa 334
frank26080115 0:84d7747641aa 335 /* --------------------------------- End Of File ------------------------------ */