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:
Thu Nov 08 11:45:42 2018 +0000
Revision:
171:3a7713b1edbc
mbed library. Release version 164

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 171:3a7713b1edbc 1 /**************************************************************************//**
AnnaBridge 171:3a7713b1edbc 2 * @file timer.h
AnnaBridge 171:3a7713b1edbc 3 * @version V3.00
AnnaBridge 171:3a7713b1edbc 4 * $Revision: 10 $
AnnaBridge 171:3a7713b1edbc 5 * $Date: 15/08/11 10:26a $
AnnaBridge 171:3a7713b1edbc 6 * @brief M451 series Timer driver header file
AnnaBridge 171:3a7713b1edbc 7 *
AnnaBridge 171:3a7713b1edbc 8 * @note
AnnaBridge 171:3a7713b1edbc 9 * Copyright (C) 2013~2015 Nuvoton Technology Corp. All rights reserved.
AnnaBridge 171:3a7713b1edbc 10 *****************************************************************************/
AnnaBridge 171:3a7713b1edbc 11 #ifndef __TIMER_H__
AnnaBridge 171:3a7713b1edbc 12 #define __TIMER_H__
AnnaBridge 171:3a7713b1edbc 13
AnnaBridge 171:3a7713b1edbc 14 #ifdef __cplusplus
AnnaBridge 171:3a7713b1edbc 15 extern "C"
AnnaBridge 171:3a7713b1edbc 16 {
AnnaBridge 171:3a7713b1edbc 17 #endif
AnnaBridge 171:3a7713b1edbc 18
AnnaBridge 171:3a7713b1edbc 19
AnnaBridge 171:3a7713b1edbc 20 /** @addtogroup Standard_Driver Standard Driver
AnnaBridge 171:3a7713b1edbc 21 @{
AnnaBridge 171:3a7713b1edbc 22 */
AnnaBridge 171:3a7713b1edbc 23
AnnaBridge 171:3a7713b1edbc 24 /** @addtogroup TIMER_Driver TIMER Driver
AnnaBridge 171:3a7713b1edbc 25 @{
AnnaBridge 171:3a7713b1edbc 26 */
AnnaBridge 171:3a7713b1edbc 27
AnnaBridge 171:3a7713b1edbc 28 /** @addtogroup TIMER_EXPORTED_CONSTANTS TIMER Exported Constants
AnnaBridge 171:3a7713b1edbc 29 @{
AnnaBridge 171:3a7713b1edbc 30 */
AnnaBridge 171:3a7713b1edbc 31 /*---------------------------------------------------------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 32 /* TIMER Operation Mode, External Counter and Capture Mode Constant Definitions */
AnnaBridge 171:3a7713b1edbc 33 /*---------------------------------------------------------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 34 #define TIMER_ONESHOT_MODE (0UL << TIMER_CTL_OPMODE_Pos) /*!< Timer working in one-shot mode */
AnnaBridge 171:3a7713b1edbc 35 #define TIMER_PERIODIC_MODE (1UL << TIMER_CTL_OPMODE_Pos) /*!< Timer working in periodic mode */
AnnaBridge 171:3a7713b1edbc 36 #define TIMER_TOGGLE_MODE (2UL << TIMER_CTL_OPMODE_Pos) /*!< Timer working in toggle-output mode */
AnnaBridge 171:3a7713b1edbc 37 #define TIMER_CONTINUOUS_MODE (3UL << TIMER_CTL_OPMODE_Pos) /*!< Timer working in continuous counting mode */
AnnaBridge 171:3a7713b1edbc 38 #define TIMER_TOUT_PIN_FROM_TX (0UL << TIMER_CTL_TGLPINSEL_Pos) /*!< Timer toggle-output pin is from Tx pin */
AnnaBridge 171:3a7713b1edbc 39 #define TIMER_TOUT_PIN_FROM_TX_EXT (1UL << TIMER_CTL_TGLPINSEL_Pos) /*!< Timer toggle-output pin is from Tx_EXT pin */
AnnaBridge 171:3a7713b1edbc 40 #define TIMER_CAPTURE_FREE_COUNTING_MODE (0UL << TIMER_EXTCTL_CAPFUNCS_Pos) /*!< Timer capture event to get timer counter value */
AnnaBridge 171:3a7713b1edbc 41 #define TIMER_CAPTURE_COUNTER_RESET_MODE (1UL << TIMER_EXTCTL_CAPFUNCS_Pos) /*!< Timer capture event to reset timer counter */
AnnaBridge 171:3a7713b1edbc 42 #define TIMER_CAPTURE_FALLING_EDGE (0UL << TIMER_EXTCTL_CAPEDGE_Pos) /*!< Falling edge detection to trigger timer capture */
AnnaBridge 171:3a7713b1edbc 43 #define TIMER_CAPTURE_RISING_EDGE (1UL << TIMER_EXTCTL_CAPEDGE_Pos) /*!< Rising edge detection to trigger timer capture */
AnnaBridge 171:3a7713b1edbc 44 #define TIMER_CAPTURE_FALLING_AND_RISING_EDGE (2UL << TIMER_EXTCTL_CAPEDGE_Pos) /*!< Both falling and rising edge detection to trigger timer capture */
AnnaBridge 171:3a7713b1edbc 45 #define TIMER_COUNTER_FALLING_EDGE (0UL << TIMER_EXTCTL_CNTPHASE_Pos) /*!< Counter increase on falling edge detection */
AnnaBridge 171:3a7713b1edbc 46 #define TIMER_COUNTER_RISING_EDGE (1UL << TIMER_EXTCTL_CNTPHASE_Pos) /*!< Counter increase on rising edge detection */
AnnaBridge 171:3a7713b1edbc 47
AnnaBridge 171:3a7713b1edbc 48 /*@}*/ /* end of group TIMER_EXPORTED_CONSTANTS */
AnnaBridge 171:3a7713b1edbc 49
AnnaBridge 171:3a7713b1edbc 50
AnnaBridge 171:3a7713b1edbc 51 /** @addtogroup TIMER_EXPORTED_FUNCTIONS TIMER Exported Functions
AnnaBridge 171:3a7713b1edbc 52 @{
AnnaBridge 171:3a7713b1edbc 53 */
AnnaBridge 171:3a7713b1edbc 54
AnnaBridge 171:3a7713b1edbc 55 /**
AnnaBridge 171:3a7713b1edbc 56 * @brief Set Timer Compared Value
AnnaBridge 171:3a7713b1edbc 57 *
AnnaBridge 171:3a7713b1edbc 58 * @param[in] timer The pointer of the specified Timer module. It could be TIMER0, TIMER1, TIMER2, TIMER3.
AnnaBridge 171:3a7713b1edbc 59 * @param[in] u32Value Timer compare value. Valid values are between 2 to 0xFFFFFF.
AnnaBridge 171:3a7713b1edbc 60 *
AnnaBridge 171:3a7713b1edbc 61 * @return None
AnnaBridge 171:3a7713b1edbc 62 *
AnnaBridge 171:3a7713b1edbc 63 * @details This macro is used to set timer compared value to adjust timer time-out interval.
AnnaBridge 171:3a7713b1edbc 64 * @note 1. Never write 0x0 or 0x1 in this field, or the core will run into unknown state. \n
AnnaBridge 171:3a7713b1edbc 65 * 2. If update timer compared value in continuous counting mode, timer counter value will keep counting continuously. \n
AnnaBridge 171:3a7713b1edbc 66 * But if timer is operating at other modes, the timer up counter will restart counting and start from 0.
AnnaBridge 171:3a7713b1edbc 67 */
AnnaBridge 171:3a7713b1edbc 68 #define TIMER_SET_CMP_VALUE(timer, u32Value) ((timer)->CMP = (u32Value))
AnnaBridge 171:3a7713b1edbc 69
AnnaBridge 171:3a7713b1edbc 70 /**
AnnaBridge 171:3a7713b1edbc 71 * @brief Set Timer Prescale Value
AnnaBridge 171:3a7713b1edbc 72 *
AnnaBridge 171:3a7713b1edbc 73 * @param[in] timer The pointer of the specified Timer module. It could be TIMER0, TIMER1, TIMER2, TIMER3.
AnnaBridge 171:3a7713b1edbc 74 * @param[in] u32Value Timer prescale value. Valid values are between 0 to 0xFF.
AnnaBridge 171:3a7713b1edbc 75 *
AnnaBridge 171:3a7713b1edbc 76 * @return None
AnnaBridge 171:3a7713b1edbc 77 *
AnnaBridge 171:3a7713b1edbc 78 * @details This macro is used to set timer prescale value and timer source clock will be divided by (prescale + 1) \n
AnnaBridge 171:3a7713b1edbc 79 * before it is fed into timer.
AnnaBridge 171:3a7713b1edbc 80 */
AnnaBridge 171:3a7713b1edbc 81 #define TIMER_SET_PRESCALE_VALUE(timer, u32Value) ((timer)->CTL = ((timer)->CTL & ~TIMER_CTL_PSC_Msk) | (u32Value))
AnnaBridge 171:3a7713b1edbc 82
AnnaBridge 171:3a7713b1edbc 83 /**
AnnaBridge 171:3a7713b1edbc 84 * @brief Check specify Timer Status
AnnaBridge 171:3a7713b1edbc 85 *
AnnaBridge 171:3a7713b1edbc 86 * @param[in] timer The pointer of the specified Timer module. It could be TIMER0, TIMER1, TIMER2, TIMER3.
AnnaBridge 171:3a7713b1edbc 87 *
AnnaBridge 171:3a7713b1edbc 88 * @retval 0 Timer 24-bit up counter is inactive
AnnaBridge 171:3a7713b1edbc 89 * @retval 1 Timer 24-bit up counter is active
AnnaBridge 171:3a7713b1edbc 90 *
AnnaBridge 171:3a7713b1edbc 91 * @details This macro is used to check if specify Timer counter is inactive or active.
AnnaBridge 171:3a7713b1edbc 92 */
AnnaBridge 171:3a7713b1edbc 93 #define TIMER_IS_ACTIVE(timer) (((timer)->CTL & TIMER_CTL_ACTSTS_Msk)? 1 : 0)
AnnaBridge 171:3a7713b1edbc 94
AnnaBridge 171:3a7713b1edbc 95 /**
AnnaBridge 171:3a7713b1edbc 96 * @brief Select Toggle-output Pin
AnnaBridge 171:3a7713b1edbc 97 *
AnnaBridge 171:3a7713b1edbc 98 * @param[in] timer The pointer of the specified Timer module. It could be TIMER0, TIMER1, TIMER2, TIMER3.
AnnaBridge 171:3a7713b1edbc 99 * @param[in] u32ToutSel Toggle-output pin selection, valid values are:
AnnaBridge 171:3a7713b1edbc 100 * - \ref TIMER_TOUT_PIN_FROM_TX
AnnaBridge 171:3a7713b1edbc 101 * - \ref TIMER_TOUT_PIN_FROM_TX_EXT
AnnaBridge 171:3a7713b1edbc 102 *
AnnaBridge 171:3a7713b1edbc 103 * @return None
AnnaBridge 171:3a7713b1edbc 104 *
AnnaBridge 171:3a7713b1edbc 105 * @details This macro is used to select timer toggle-output pin is output on Tx or Tx_EXT pin.
AnnaBridge 171:3a7713b1edbc 106 */
AnnaBridge 171:3a7713b1edbc 107 #define TIMER_SELECT_TOUT_PIN(timer, u32ToutSel) ((timer)->CTL = ((timer)->CTL & ~TIMER_CTL_TGLPINSEL_Msk) | (u32ToutSel))
AnnaBridge 171:3a7713b1edbc 108
AnnaBridge 171:3a7713b1edbc 109 /**
AnnaBridge 171:3a7713b1edbc 110 * @brief Start Timer Counting
AnnaBridge 171:3a7713b1edbc 111 *
AnnaBridge 171:3a7713b1edbc 112 * @param[in] timer The pointer of the specified Timer module. It could be TIMER0, TIMER1, TIMER2, TIMER3.
AnnaBridge 171:3a7713b1edbc 113 *
AnnaBridge 171:3a7713b1edbc 114 * @return None
AnnaBridge 171:3a7713b1edbc 115 *
AnnaBridge 171:3a7713b1edbc 116 * @details This function is used to start Timer counting.
AnnaBridge 171:3a7713b1edbc 117 */
AnnaBridge 171:3a7713b1edbc 118 static __INLINE void TIMER_Start(TIMER_T *timer)
AnnaBridge 171:3a7713b1edbc 119 {
AnnaBridge 171:3a7713b1edbc 120 timer->CTL |= TIMER_CTL_CNTEN_Msk;
AnnaBridge 171:3a7713b1edbc 121 }
AnnaBridge 171:3a7713b1edbc 122
AnnaBridge 171:3a7713b1edbc 123 /**
AnnaBridge 171:3a7713b1edbc 124 * @brief Stop Timer Counting
AnnaBridge 171:3a7713b1edbc 125 *
AnnaBridge 171:3a7713b1edbc 126 * @param[in] timer The pointer of the specified Timer module. It could be TIMER0, TIMER1, TIMER2, TIMER3.
AnnaBridge 171:3a7713b1edbc 127 *
AnnaBridge 171:3a7713b1edbc 128 * @return None
AnnaBridge 171:3a7713b1edbc 129 *
AnnaBridge 171:3a7713b1edbc 130 * @details This function is used to stop/suspend Timer counting.
AnnaBridge 171:3a7713b1edbc 131 */
AnnaBridge 171:3a7713b1edbc 132 static __INLINE void TIMER_Stop(TIMER_T *timer)
AnnaBridge 171:3a7713b1edbc 133 {
AnnaBridge 171:3a7713b1edbc 134 timer->CTL &= ~TIMER_CTL_CNTEN_Msk;
AnnaBridge 171:3a7713b1edbc 135 }
AnnaBridge 171:3a7713b1edbc 136
AnnaBridge 171:3a7713b1edbc 137 /**
AnnaBridge 171:3a7713b1edbc 138 * @brief Enable Timer Interrupt Wake-up Function
AnnaBridge 171:3a7713b1edbc 139 *
AnnaBridge 171:3a7713b1edbc 140 * @param[in] timer The pointer of the specified Timer module. It could be TIMER0, TIMER1, TIMER2, TIMER3.
AnnaBridge 171:3a7713b1edbc 141 *
AnnaBridge 171:3a7713b1edbc 142 * @return None
AnnaBridge 171:3a7713b1edbc 143 *
AnnaBridge 171:3a7713b1edbc 144 * @details This function is used to enable the timer interrupt wake-up function and interrupt source could be time-out interrupt, \n
AnnaBridge 171:3a7713b1edbc 145 * counter event interrupt or capture trigger interrupt.
AnnaBridge 171:3a7713b1edbc 146 * @note To wake the system from Power-down mode, timer clock source must be ether LXT or LIRC.
AnnaBridge 171:3a7713b1edbc 147 */
AnnaBridge 171:3a7713b1edbc 148 static __INLINE void TIMER_EnableWakeup(TIMER_T *timer)
AnnaBridge 171:3a7713b1edbc 149 {
AnnaBridge 171:3a7713b1edbc 150 timer->CTL |= TIMER_CTL_WKEN_Msk;
AnnaBridge 171:3a7713b1edbc 151 }
AnnaBridge 171:3a7713b1edbc 152
AnnaBridge 171:3a7713b1edbc 153 /**
AnnaBridge 171:3a7713b1edbc 154 * @brief Disable Timer Wake-up Function
AnnaBridge 171:3a7713b1edbc 155 *
AnnaBridge 171:3a7713b1edbc 156 * @param[in] timer The pointer of the specified Timer module. It could be TIMER0, TIMER1, TIMER2, TIMER3.
AnnaBridge 171:3a7713b1edbc 157 *
AnnaBridge 171:3a7713b1edbc 158 * @return None
AnnaBridge 171:3a7713b1edbc 159 *
AnnaBridge 171:3a7713b1edbc 160 * @details This function is used to disable the timer interrupt wake-up function.
AnnaBridge 171:3a7713b1edbc 161 */
AnnaBridge 171:3a7713b1edbc 162 static __INLINE void TIMER_DisableWakeup(TIMER_T *timer)
AnnaBridge 171:3a7713b1edbc 163 {
AnnaBridge 171:3a7713b1edbc 164 timer->CTL &= ~TIMER_CTL_WKEN_Msk;
AnnaBridge 171:3a7713b1edbc 165 }
AnnaBridge 171:3a7713b1edbc 166
AnnaBridge 171:3a7713b1edbc 167 /**
AnnaBridge 171:3a7713b1edbc 168 * @brief Enable Capture Pin De-bounce
AnnaBridge 171:3a7713b1edbc 169 *
AnnaBridge 171:3a7713b1edbc 170 * @param[in] timer The pointer of the specified Timer module. It could be TIMER0, TIMER1, TIMER2, TIMER3.
AnnaBridge 171:3a7713b1edbc 171 *
AnnaBridge 171:3a7713b1edbc 172 * @return None
AnnaBridge 171:3a7713b1edbc 173 *
AnnaBridge 171:3a7713b1edbc 174 * @details This function is used to enable the detect de-bounce function of capture pin.
AnnaBridge 171:3a7713b1edbc 175 */
AnnaBridge 171:3a7713b1edbc 176 static __INLINE void TIMER_EnableCaptureDebounce(TIMER_T *timer)
AnnaBridge 171:3a7713b1edbc 177 {
AnnaBridge 171:3a7713b1edbc 178 timer->EXTCTL |= TIMER_EXTCTL_CAPDBEN_Msk;
AnnaBridge 171:3a7713b1edbc 179 }
AnnaBridge 171:3a7713b1edbc 180
AnnaBridge 171:3a7713b1edbc 181 /**
AnnaBridge 171:3a7713b1edbc 182 * @brief Disable Capture Pin De-bounce
AnnaBridge 171:3a7713b1edbc 183 *
AnnaBridge 171:3a7713b1edbc 184 * @param[in] timer The pointer of the specified Timer module. It could be TIMER0, TIMER1, TIMER2, TIMER3.
AnnaBridge 171:3a7713b1edbc 185 *
AnnaBridge 171:3a7713b1edbc 186 * @return None
AnnaBridge 171:3a7713b1edbc 187 *
AnnaBridge 171:3a7713b1edbc 188 * @details This function is used to disable the detect de-bounce function of capture pin.
AnnaBridge 171:3a7713b1edbc 189 */
AnnaBridge 171:3a7713b1edbc 190 static __INLINE void TIMER_DisableCaptureDebounce(TIMER_T *timer)
AnnaBridge 171:3a7713b1edbc 191 {
AnnaBridge 171:3a7713b1edbc 192 timer->EXTCTL &= ~TIMER_EXTCTL_CAPDBEN_Msk;
AnnaBridge 171:3a7713b1edbc 193 }
AnnaBridge 171:3a7713b1edbc 194
AnnaBridge 171:3a7713b1edbc 195 /**
AnnaBridge 171:3a7713b1edbc 196 * @brief Enable Counter Pin De-bounce
AnnaBridge 171:3a7713b1edbc 197 *
AnnaBridge 171:3a7713b1edbc 198 * @param[in] timer The pointer of the specified Timer module. It could be TIMER0, TIMER1, TIMER2, TIMER3.
AnnaBridge 171:3a7713b1edbc 199 *
AnnaBridge 171:3a7713b1edbc 200 * @return None
AnnaBridge 171:3a7713b1edbc 201 *
AnnaBridge 171:3a7713b1edbc 202 * @details This function is used to enable the detect de-bounce function of counter pin.
AnnaBridge 171:3a7713b1edbc 203 */
AnnaBridge 171:3a7713b1edbc 204 static __INLINE void TIMER_EnableEventCounterDebounce(TIMER_T *timer)
AnnaBridge 171:3a7713b1edbc 205 {
AnnaBridge 171:3a7713b1edbc 206 timer->EXTCTL |= TIMER_EXTCTL_CNTDBEN_Msk;
AnnaBridge 171:3a7713b1edbc 207 }
AnnaBridge 171:3a7713b1edbc 208
AnnaBridge 171:3a7713b1edbc 209 /**
AnnaBridge 171:3a7713b1edbc 210 * @brief Disable Counter Pin De-bounce
AnnaBridge 171:3a7713b1edbc 211 *
AnnaBridge 171:3a7713b1edbc 212 * @param[in] timer The pointer of the specified Timer module. It could be TIMER0, TIMER1, TIMER2, TIMER3.
AnnaBridge 171:3a7713b1edbc 213 *
AnnaBridge 171:3a7713b1edbc 214 * @return None
AnnaBridge 171:3a7713b1edbc 215 *
AnnaBridge 171:3a7713b1edbc 216 * @details This function is used to disable the detect de-bounce function of counter pin.
AnnaBridge 171:3a7713b1edbc 217 */
AnnaBridge 171:3a7713b1edbc 218 static __INLINE void TIMER_DisableEventCounterDebounce(TIMER_T *timer)
AnnaBridge 171:3a7713b1edbc 219 {
AnnaBridge 171:3a7713b1edbc 220 timer->EXTCTL &= ~TIMER_EXTCTL_CNTDBEN_Msk;
AnnaBridge 171:3a7713b1edbc 221 }
AnnaBridge 171:3a7713b1edbc 222
AnnaBridge 171:3a7713b1edbc 223 /**
AnnaBridge 171:3a7713b1edbc 224 * @brief Enable Timer Time-out Interrupt
AnnaBridge 171:3a7713b1edbc 225 *
AnnaBridge 171:3a7713b1edbc 226 * @param[in] timer The pointer of the specified Timer module. It could be TIMER0, TIMER1, TIMER2, TIMER3.
AnnaBridge 171:3a7713b1edbc 227 *
AnnaBridge 171:3a7713b1edbc 228 * @return None
AnnaBridge 171:3a7713b1edbc 229 *
AnnaBridge 171:3a7713b1edbc 230 * @details This function is used to enable the timer time-out interrupt function.
AnnaBridge 171:3a7713b1edbc 231 */
AnnaBridge 171:3a7713b1edbc 232 static __INLINE void TIMER_EnableInt(TIMER_T *timer)
AnnaBridge 171:3a7713b1edbc 233 {
AnnaBridge 171:3a7713b1edbc 234 timer->CTL |= TIMER_CTL_INTEN_Msk;
AnnaBridge 171:3a7713b1edbc 235 }
AnnaBridge 171:3a7713b1edbc 236
AnnaBridge 171:3a7713b1edbc 237 /**
AnnaBridge 171:3a7713b1edbc 238 * @brief Disable Timer Time-out Interrupt
AnnaBridge 171:3a7713b1edbc 239 *
AnnaBridge 171:3a7713b1edbc 240 * @param[in] timer The pointer of the specified Timer module. It could be TIMER0, TIMER1, TIMER2, TIMER3.
AnnaBridge 171:3a7713b1edbc 241 *
AnnaBridge 171:3a7713b1edbc 242 * @return None
AnnaBridge 171:3a7713b1edbc 243 *
AnnaBridge 171:3a7713b1edbc 244 * @details This function is used to disable the timer time-out interrupt function.
AnnaBridge 171:3a7713b1edbc 245 */
AnnaBridge 171:3a7713b1edbc 246 static __INLINE void TIMER_DisableInt(TIMER_T *timer)
AnnaBridge 171:3a7713b1edbc 247 {
AnnaBridge 171:3a7713b1edbc 248 timer->CTL &= ~TIMER_CTL_INTEN_Msk;
AnnaBridge 171:3a7713b1edbc 249 }
AnnaBridge 171:3a7713b1edbc 250
AnnaBridge 171:3a7713b1edbc 251 /**
AnnaBridge 171:3a7713b1edbc 252 * @brief Enable Capture Trigger Interrupt
AnnaBridge 171:3a7713b1edbc 253 *
AnnaBridge 171:3a7713b1edbc 254 * @param[in] timer The pointer of the specified Timer module. It could be TIMER0, TIMER1, TIMER2, TIMER3.
AnnaBridge 171:3a7713b1edbc 255 *
AnnaBridge 171:3a7713b1edbc 256 * @return None
AnnaBridge 171:3a7713b1edbc 257 *
AnnaBridge 171:3a7713b1edbc 258 * @details This function is used to enable the timer capture trigger interrupt function.
AnnaBridge 171:3a7713b1edbc 259 */
AnnaBridge 171:3a7713b1edbc 260 static __INLINE void TIMER_EnableCaptureInt(TIMER_T *timer)
AnnaBridge 171:3a7713b1edbc 261 {
AnnaBridge 171:3a7713b1edbc 262 timer->EXTCTL |= TIMER_EXTCTL_CAPIEN_Msk;
AnnaBridge 171:3a7713b1edbc 263 }
AnnaBridge 171:3a7713b1edbc 264
AnnaBridge 171:3a7713b1edbc 265 /**
AnnaBridge 171:3a7713b1edbc 266 * @brief Disable Capture Trigger Interrupt
AnnaBridge 171:3a7713b1edbc 267 *
AnnaBridge 171:3a7713b1edbc 268 * @param[in] timer The pointer of the specified Timer module. It could be TIMER0, TIMER1, TIMER2, TIMER3.
AnnaBridge 171:3a7713b1edbc 269 *
AnnaBridge 171:3a7713b1edbc 270 * @return None
AnnaBridge 171:3a7713b1edbc 271 *
AnnaBridge 171:3a7713b1edbc 272 * @details This function is used to disable the timer capture trigger interrupt function.
AnnaBridge 171:3a7713b1edbc 273 */
AnnaBridge 171:3a7713b1edbc 274 static __INLINE void TIMER_DisableCaptureInt(TIMER_T *timer)
AnnaBridge 171:3a7713b1edbc 275 {
AnnaBridge 171:3a7713b1edbc 276 timer->EXTCTL &= ~TIMER_EXTCTL_CAPIEN_Msk;
AnnaBridge 171:3a7713b1edbc 277 }
AnnaBridge 171:3a7713b1edbc 278
AnnaBridge 171:3a7713b1edbc 279 /**
AnnaBridge 171:3a7713b1edbc 280 * @brief Get Timer Time-out Interrupt Flag
AnnaBridge 171:3a7713b1edbc 281 *
AnnaBridge 171:3a7713b1edbc 282 * @param[in] timer The pointer of the specified Timer module. It could be TIMER0, TIMER1, TIMER2, TIMER3.
AnnaBridge 171:3a7713b1edbc 283 *
AnnaBridge 171:3a7713b1edbc 284 * @retval 0 Timer time-out interrupt did not occur
AnnaBridge 171:3a7713b1edbc 285 * @retval 1 Timer time-out interrupt occurred
AnnaBridge 171:3a7713b1edbc 286 *
AnnaBridge 171:3a7713b1edbc 287 * @details This function indicates timer time-out interrupt occurred or not.
AnnaBridge 171:3a7713b1edbc 288 */
AnnaBridge 171:3a7713b1edbc 289 static __INLINE uint32_t TIMER_GetIntFlag(TIMER_T *timer)
AnnaBridge 171:3a7713b1edbc 290 {
AnnaBridge 171:3a7713b1edbc 291 return ((timer->INTSTS & TIMER_INTSTS_TIF_Msk) ? 1 : 0);
AnnaBridge 171:3a7713b1edbc 292 }
AnnaBridge 171:3a7713b1edbc 293
AnnaBridge 171:3a7713b1edbc 294 /**
AnnaBridge 171:3a7713b1edbc 295 * @brief Clear Timer Time-out Interrupt Flag
AnnaBridge 171:3a7713b1edbc 296 *
AnnaBridge 171:3a7713b1edbc 297 * @param[in] timer The pointer of the specified Timer module. It could be TIMER0, TIMER1, TIMER2, TIMER3.
AnnaBridge 171:3a7713b1edbc 298 *
AnnaBridge 171:3a7713b1edbc 299 * @return None
AnnaBridge 171:3a7713b1edbc 300 *
AnnaBridge 171:3a7713b1edbc 301 * @details This function clears timer time-out interrupt flag to 0.
AnnaBridge 171:3a7713b1edbc 302 */
AnnaBridge 171:3a7713b1edbc 303 static __INLINE void TIMER_ClearIntFlag(TIMER_T *timer)
AnnaBridge 171:3a7713b1edbc 304 {
AnnaBridge 171:3a7713b1edbc 305 timer->INTSTS = (timer->INTSTS & ~TIMER_INTSTS_TWKF_Msk) | TIMER_INTSTS_TIF_Msk;
AnnaBridge 171:3a7713b1edbc 306 }
AnnaBridge 171:3a7713b1edbc 307
AnnaBridge 171:3a7713b1edbc 308 /**
AnnaBridge 171:3a7713b1edbc 309 * @brief Get Timer Capture Interrupt Flag
AnnaBridge 171:3a7713b1edbc 310 *
AnnaBridge 171:3a7713b1edbc 311 * @param[in] timer The pointer of the specified Timer module. It could be TIMER0, TIMER1, TIMER2, TIMER3.
AnnaBridge 171:3a7713b1edbc 312 *
AnnaBridge 171:3a7713b1edbc 313 * @retval 0 Timer capture interrupt did not occur
AnnaBridge 171:3a7713b1edbc 314 * @retval 1 Timer capture interrupt occurred
AnnaBridge 171:3a7713b1edbc 315 *
AnnaBridge 171:3a7713b1edbc 316 * @details This function indicates timer capture trigger interrupt occurred or not.
AnnaBridge 171:3a7713b1edbc 317 */
AnnaBridge 171:3a7713b1edbc 318 static __INLINE uint32_t TIMER_GetCaptureIntFlag(TIMER_T *timer)
AnnaBridge 171:3a7713b1edbc 319 {
AnnaBridge 171:3a7713b1edbc 320 return timer->EINTSTS;
AnnaBridge 171:3a7713b1edbc 321 }
AnnaBridge 171:3a7713b1edbc 322
AnnaBridge 171:3a7713b1edbc 323 /**
AnnaBridge 171:3a7713b1edbc 324 * @brief Clear Timer Capture Interrupt Flag
AnnaBridge 171:3a7713b1edbc 325 *
AnnaBridge 171:3a7713b1edbc 326 * @param[in] timer The pointer of the specified Timer module. It could be TIMER0, TIMER1, TIMER2, TIMER3.
AnnaBridge 171:3a7713b1edbc 327 *
AnnaBridge 171:3a7713b1edbc 328 * @return None
AnnaBridge 171:3a7713b1edbc 329 *
AnnaBridge 171:3a7713b1edbc 330 * @details This function clears timer capture trigger interrupt flag to 0.
AnnaBridge 171:3a7713b1edbc 331 */
AnnaBridge 171:3a7713b1edbc 332 static __INLINE void TIMER_ClearCaptureIntFlag(TIMER_T *timer)
AnnaBridge 171:3a7713b1edbc 333 {
AnnaBridge 171:3a7713b1edbc 334 timer->EINTSTS = TIMER_EINTSTS_CAPIF_Msk;
AnnaBridge 171:3a7713b1edbc 335 }
AnnaBridge 171:3a7713b1edbc 336
AnnaBridge 171:3a7713b1edbc 337 /**
AnnaBridge 171:3a7713b1edbc 338 * @brief Get Timer Wake-up Flag
AnnaBridge 171:3a7713b1edbc 339 *
AnnaBridge 171:3a7713b1edbc 340 * @param[in] timer The pointer of the specified Timer module. It could be TIMER0, TIMER1, TIMER2, TIMER3.
AnnaBridge 171:3a7713b1edbc 341 *
AnnaBridge 171:3a7713b1edbc 342 * @retval 0 Timer does not cause CPU wake-up
AnnaBridge 171:3a7713b1edbc 343 * @retval 1 Timer interrupt event cause CPU wake-up
AnnaBridge 171:3a7713b1edbc 344 *
AnnaBridge 171:3a7713b1edbc 345 * @details This function indicates timer interrupt event has waked up system or not.
AnnaBridge 171:3a7713b1edbc 346 */
AnnaBridge 171:3a7713b1edbc 347 static __INLINE uint32_t TIMER_GetWakeupFlag(TIMER_T *timer)
AnnaBridge 171:3a7713b1edbc 348 {
AnnaBridge 171:3a7713b1edbc 349 return (timer->INTSTS & TIMER_INTSTS_TWKF_Msk ? 1 : 0);
AnnaBridge 171:3a7713b1edbc 350 }
AnnaBridge 171:3a7713b1edbc 351
AnnaBridge 171:3a7713b1edbc 352 /**
AnnaBridge 171:3a7713b1edbc 353 * @brief Clear Timer Wake-up Flag
AnnaBridge 171:3a7713b1edbc 354 *
AnnaBridge 171:3a7713b1edbc 355 * @param[in] timer The pointer of the specified Timer module. It could be TIMER0, TIMER1, TIMER2, TIMER3.
AnnaBridge 171:3a7713b1edbc 356 *
AnnaBridge 171:3a7713b1edbc 357 * @return None
AnnaBridge 171:3a7713b1edbc 358 *
AnnaBridge 171:3a7713b1edbc 359 * @details This function clears the timer wake-up system flag to 0.
AnnaBridge 171:3a7713b1edbc 360 */
AnnaBridge 171:3a7713b1edbc 361 static __INLINE void TIMER_ClearWakeupFlag(TIMER_T *timer)
AnnaBridge 171:3a7713b1edbc 362 {
AnnaBridge 171:3a7713b1edbc 363 timer->INTSTS = (timer->INTSTS & ~TIMER_INTSTS_TIF_Msk) | TIMER_INTSTS_TWKF_Msk;
AnnaBridge 171:3a7713b1edbc 364 }
AnnaBridge 171:3a7713b1edbc 365
AnnaBridge 171:3a7713b1edbc 366 /**
AnnaBridge 171:3a7713b1edbc 367 * @brief Get Capture value
AnnaBridge 171:3a7713b1edbc 368 *
AnnaBridge 171:3a7713b1edbc 369 * @param[in] timer The pointer of the specified Timer module. It could be TIMER0, TIMER1, TIMER2, TIMER3.
AnnaBridge 171:3a7713b1edbc 370 *
AnnaBridge 171:3a7713b1edbc 371 * @return 24-bit Capture Value
AnnaBridge 171:3a7713b1edbc 372 *
AnnaBridge 171:3a7713b1edbc 373 * @details This function reports the current 24-bit timer capture value.
AnnaBridge 171:3a7713b1edbc 374 */
AnnaBridge 171:3a7713b1edbc 375 static __INLINE uint32_t TIMER_GetCaptureData(TIMER_T *timer)
AnnaBridge 171:3a7713b1edbc 376 {
AnnaBridge 171:3a7713b1edbc 377 return timer->CAP;
AnnaBridge 171:3a7713b1edbc 378 }
AnnaBridge 171:3a7713b1edbc 379
AnnaBridge 171:3a7713b1edbc 380 /**
AnnaBridge 171:3a7713b1edbc 381 * @brief Get Counter value
AnnaBridge 171:3a7713b1edbc 382 *
AnnaBridge 171:3a7713b1edbc 383 * @param[in] timer The pointer of the specified Timer module. It could be TIMER0, TIMER1, TIMER2, TIMER3.
AnnaBridge 171:3a7713b1edbc 384 *
AnnaBridge 171:3a7713b1edbc 385 * @return 24-bit Counter Value
AnnaBridge 171:3a7713b1edbc 386 *
AnnaBridge 171:3a7713b1edbc 387 * @details This function reports the current 24-bit timer counter value.
AnnaBridge 171:3a7713b1edbc 388 */
AnnaBridge 171:3a7713b1edbc 389 static __INLINE uint32_t TIMER_GetCounter(TIMER_T *timer)
AnnaBridge 171:3a7713b1edbc 390 {
AnnaBridge 171:3a7713b1edbc 391 return timer->CNT;
AnnaBridge 171:3a7713b1edbc 392 }
AnnaBridge 171:3a7713b1edbc 393
AnnaBridge 171:3a7713b1edbc 394 uint32_t TIMER_Open(TIMER_T *timer, uint32_t u32Mode, uint32_t u32Freq);
AnnaBridge 171:3a7713b1edbc 395 void TIMER_Close(TIMER_T *timer);
AnnaBridge 171:3a7713b1edbc 396 void TIMER_Delay(TIMER_T *timer, uint32_t u32Usec);
AnnaBridge 171:3a7713b1edbc 397 void TIMER_EnableCapture(TIMER_T *timer, uint32_t u32CapMode, uint32_t u32Edge);
AnnaBridge 171:3a7713b1edbc 398 void TIMER_DisableCapture(TIMER_T *timer);
AnnaBridge 171:3a7713b1edbc 399 void TIMER_EnableEventCounter(TIMER_T *timer, uint32_t u32Edge);
AnnaBridge 171:3a7713b1edbc 400 void TIMER_DisableEventCounter(TIMER_T *timer);
AnnaBridge 171:3a7713b1edbc 401 uint32_t TIMER_GetModuleClock(TIMER_T *timer);
AnnaBridge 171:3a7713b1edbc 402
AnnaBridge 171:3a7713b1edbc 403 /*@}*/ /* end of group TIMER_EXPORTED_FUNCTIONS */
AnnaBridge 171:3a7713b1edbc 404
AnnaBridge 171:3a7713b1edbc 405 /*@}*/ /* end of group TIMER_Driver */
AnnaBridge 171:3a7713b1edbc 406
AnnaBridge 171:3a7713b1edbc 407 /*@}*/ /* end of group Standard_Driver */
AnnaBridge 171:3a7713b1edbc 408
AnnaBridge 171:3a7713b1edbc 409 #ifdef __cplusplus
AnnaBridge 171:3a7713b1edbc 410 }
AnnaBridge 171:3a7713b1edbc 411 #endif
AnnaBridge 171:3a7713b1edbc 412
AnnaBridge 171:3a7713b1edbc 413 #endif //__TIMER_H__
AnnaBridge 171:3a7713b1edbc 414
AnnaBridge 171:3a7713b1edbc 415 /*** (C) COPYRIGHT 2013~2015 Nuvoton Technology Corp. ***/