mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Mon Oct 02 15:33:19 2017 +0100
Revision:
174:b96e65c34a4d
This updates the lib to the mbed lib v 152

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 174:b96e65c34a4d 1 /**************************************************************************//**
AnnaBridge 174:b96e65c34a4d 2 * @file timer.c
AnnaBridge 174:b96e65c34a4d 3 * @version V1.00
AnnaBridge 174:b96e65c34a4d 4 * $Revision: 11 $
AnnaBridge 174:b96e65c34a4d 5 * $Date: 15/06/23 5:15p $
AnnaBridge 174:b96e65c34a4d 6 * @brief Nano100 series TIMER driver source file
AnnaBridge 174:b96e65c34a4d 7 *
AnnaBridge 174:b96e65c34a4d 8 * @note
AnnaBridge 174:b96e65c34a4d 9 * Copyright (C) 2014 Nuvoton Technology Corp. All rights reserved.
AnnaBridge 174:b96e65c34a4d 10 *****************************************************************************/
AnnaBridge 174:b96e65c34a4d 11 #include "Nano100Series.h"
AnnaBridge 174:b96e65c34a4d 12
AnnaBridge 174:b96e65c34a4d 13 /** @addtogroup NANO100_Device_Driver NANO100 Device Driver
AnnaBridge 174:b96e65c34a4d 14 @{
AnnaBridge 174:b96e65c34a4d 15 */
AnnaBridge 174:b96e65c34a4d 16
AnnaBridge 174:b96e65c34a4d 17 /** @addtogroup NANO100_TIMER_Driver TIMER Driver
AnnaBridge 174:b96e65c34a4d 18 @{
AnnaBridge 174:b96e65c34a4d 19 */
AnnaBridge 174:b96e65c34a4d 20
AnnaBridge 174:b96e65c34a4d 21
AnnaBridge 174:b96e65c34a4d 22 /** @addtogroup NANO100_TIMER_EXPORTED_FUNCTIONS TIMER Exported Functions
AnnaBridge 174:b96e65c34a4d 23 @{
AnnaBridge 174:b96e65c34a4d 24 */
AnnaBridge 174:b96e65c34a4d 25
AnnaBridge 174:b96e65c34a4d 26 /**
AnnaBridge 174:b96e65c34a4d 27 * @brief This API is used to configure timer to operate in specified mode
AnnaBridge 174:b96e65c34a4d 28 * and frequency. If timer cannot work in target frequency, a closest
AnnaBridge 174:b96e65c34a4d 29 * frequency will be chose and returned.
AnnaBridge 174:b96e65c34a4d 30 * @param[in] timer The base address of Timer module
AnnaBridge 174:b96e65c34a4d 31 * @param[in] u32Mode Operation mode. Possible options are
AnnaBridge 174:b96e65c34a4d 32 * - \ref TIMER_ONESHOT_MODE
AnnaBridge 174:b96e65c34a4d 33 * - \ref TIMER_PERIODIC_MODE
AnnaBridge 174:b96e65c34a4d 34 * - \ref TIMER_TOGGLE_MODE
AnnaBridge 174:b96e65c34a4d 35 * - \ref TIMER_CONTINUOUS_MODE
AnnaBridge 174:b96e65c34a4d 36 * @param[in] u32Freq Target working frequency
AnnaBridge 174:b96e65c34a4d 37 * @return Real Timer working frequency
AnnaBridge 174:b96e65c34a4d 38 * @note After calling this API, Timer is \b NOT running yet. But could start timer running be calling
AnnaBridge 174:b96e65c34a4d 39 * \ref TIMER_Start macro or program registers directly
AnnaBridge 174:b96e65c34a4d 40 */
AnnaBridge 174:b96e65c34a4d 41 uint32_t TIMER_Open(TIMER_T *timer, uint32_t u32Mode, uint32_t u32Freq)
AnnaBridge 174:b96e65c34a4d 42 {
AnnaBridge 174:b96e65c34a4d 43 uint32_t u32Clk = TIMER_GetModuleClock(timer);
AnnaBridge 174:b96e65c34a4d 44 uint32_t u32Cmpr = 0, u32Prescale = 0;
AnnaBridge 174:b96e65c34a4d 45
AnnaBridge 174:b96e65c34a4d 46 // Fastest possible timer working freq is u32Clk / 2. While cmpr = 2, pre-scale = 0
AnnaBridge 174:b96e65c34a4d 47 if(u32Freq > (u32Clk / 2)) {
AnnaBridge 174:b96e65c34a4d 48 u32Cmpr = 2;
AnnaBridge 174:b96e65c34a4d 49 } else {
AnnaBridge 174:b96e65c34a4d 50 if(u32Clk >= 0x2000000) {
AnnaBridge 174:b96e65c34a4d 51 u32Prescale = 3; // real prescaler value is 4
AnnaBridge 174:b96e65c34a4d 52 u32Clk >>= 2;
AnnaBridge 174:b96e65c34a4d 53 } else if(u32Clk >= 0x1000000) {
AnnaBridge 174:b96e65c34a4d 54 u32Prescale = 1; // real prescaler value is 2
AnnaBridge 174:b96e65c34a4d 55 u32Clk >>= 1;
AnnaBridge 174:b96e65c34a4d 56 }
AnnaBridge 174:b96e65c34a4d 57 u32Cmpr = u32Clk / u32Freq;
AnnaBridge 174:b96e65c34a4d 58 }
AnnaBridge 174:b96e65c34a4d 59 timer->CMPR = u32Cmpr;
AnnaBridge 174:b96e65c34a4d 60 timer->PRECNT = u32Prescale;
AnnaBridge 174:b96e65c34a4d 61 timer->CTL = u32Mode;
AnnaBridge 174:b96e65c34a4d 62
AnnaBridge 174:b96e65c34a4d 63
AnnaBridge 174:b96e65c34a4d 64 return(u32Clk / (u32Cmpr * (u32Prescale + 1)));
AnnaBridge 174:b96e65c34a4d 65 }
AnnaBridge 174:b96e65c34a4d 66
AnnaBridge 174:b96e65c34a4d 67 /**
AnnaBridge 174:b96e65c34a4d 68 * @brief This API stops Timer counting and disable the Timer interrupt function
AnnaBridge 174:b96e65c34a4d 69 * @param[in] timer The base address of Timer module
AnnaBridge 174:b96e65c34a4d 70 * @return None
AnnaBridge 174:b96e65c34a4d 71 */
AnnaBridge 174:b96e65c34a4d 72 void TIMER_Close(TIMER_T *timer)
AnnaBridge 174:b96e65c34a4d 73 {
AnnaBridge 174:b96e65c34a4d 74 timer->CTL = 0;
AnnaBridge 174:b96e65c34a4d 75 timer->IER = 0;
AnnaBridge 174:b96e65c34a4d 76 }
AnnaBridge 174:b96e65c34a4d 77
AnnaBridge 174:b96e65c34a4d 78 /**
AnnaBridge 174:b96e65c34a4d 79 * @brief This API is used to create a delay loop for u32usec micro seconds
AnnaBridge 174:b96e65c34a4d 80 * @param[in] timer The base address of Timer module
AnnaBridge 174:b96e65c34a4d 81 * @param[in] u32Usec Delay period in micro seconds with 10 usec every step. Valid values are between 10~1000000 (10 micro second ~ 1 second)
AnnaBridge 174:b96e65c34a4d 82 * @return None
AnnaBridge 174:b96e65c34a4d 83 * @note This API overwrites the register setting of the timer used to count the delay time.
AnnaBridge 174:b96e65c34a4d 84 * @note This API use polling mode. So there is no need to enable interrupt for the timer module used to generate delay
AnnaBridge 174:b96e65c34a4d 85 */
AnnaBridge 174:b96e65c34a4d 86 void TIMER_Delay(TIMER_T *timer, uint32_t u32Usec)
AnnaBridge 174:b96e65c34a4d 87 {
AnnaBridge 174:b96e65c34a4d 88 uint32_t u32Clk = TIMER_GetModuleClock(timer);
AnnaBridge 174:b96e65c34a4d 89 uint32_t u32Prescale = 0, delay = SystemCoreClock / u32Clk;
AnnaBridge 174:b96e65c34a4d 90 long long u64Cmpr;
AnnaBridge 174:b96e65c34a4d 91
AnnaBridge 174:b96e65c34a4d 92 // Clear current timer configuration
AnnaBridge 174:b96e65c34a4d 93 timer->CTL = 0;
AnnaBridge 174:b96e65c34a4d 94
AnnaBridge 174:b96e65c34a4d 95 if(u32Clk == 10000) { // min delay is 100us if timer clock source is LIRC 10k
AnnaBridge 174:b96e65c34a4d 96 u32Usec = ((u32Usec + 99) / 100) * 100;
AnnaBridge 174:b96e65c34a4d 97 } else { // 10 usec every step
AnnaBridge 174:b96e65c34a4d 98 u32Usec = ((u32Usec + 9) / 10) * 10;
AnnaBridge 174:b96e65c34a4d 99 }
AnnaBridge 174:b96e65c34a4d 100
AnnaBridge 174:b96e65c34a4d 101 if(u32Clk >= 0x2000000) {
AnnaBridge 174:b96e65c34a4d 102 u32Prescale = 3; // real prescaler value is 4
AnnaBridge 174:b96e65c34a4d 103 u32Clk >>= 2;
AnnaBridge 174:b96e65c34a4d 104 } else if(u32Clk >= 0x1000000) {
AnnaBridge 174:b96e65c34a4d 105 u32Prescale = 1; // real prescaler value is 2
AnnaBridge 174:b96e65c34a4d 106 u32Clk >>= 1;
AnnaBridge 174:b96e65c34a4d 107 }
AnnaBridge 174:b96e65c34a4d 108
AnnaBridge 174:b96e65c34a4d 109 // u32Usec * u32Clk might overflow if using uint32_t
AnnaBridge 174:b96e65c34a4d 110 u64Cmpr = ((long long)u32Usec * (long long)u32Clk) / (long long)1000000;
AnnaBridge 174:b96e65c34a4d 111
AnnaBridge 174:b96e65c34a4d 112 timer->CMPR = (uint32_t)u64Cmpr;
AnnaBridge 174:b96e65c34a4d 113 timer->PRECNT = u32Prescale;
AnnaBridge 174:b96e65c34a4d 114 timer->CTL = TIMER_CTL_TMR_EN_Msk; // one shot mode
AnnaBridge 174:b96e65c34a4d 115
AnnaBridge 174:b96e65c34a4d 116 // When system clock is faster than timer clock, it is possible timer active bit cannot set in time while we check it.
AnnaBridge 174:b96e65c34a4d 117 // And the while loop below return immediately, so put a tiny delay here allowing timer start counting and raise active flag.
AnnaBridge 174:b96e65c34a4d 118 for(; delay > 0; delay--) {
AnnaBridge 174:b96e65c34a4d 119 __NOP();
AnnaBridge 174:b96e65c34a4d 120 }
AnnaBridge 174:b96e65c34a4d 121
AnnaBridge 174:b96e65c34a4d 122 while(timer->CTL & TIMER_CTL_TMR_ACT_Msk);
AnnaBridge 174:b96e65c34a4d 123
AnnaBridge 174:b96e65c34a4d 124 }
AnnaBridge 174:b96e65c34a4d 125
AnnaBridge 174:b96e65c34a4d 126 /**
AnnaBridge 174:b96e65c34a4d 127 * @brief This API is used to enable timer capture function with specified mode and capture edge
AnnaBridge 174:b96e65c34a4d 128 * @param[in] timer The base address of Timer module
AnnaBridge 174:b96e65c34a4d 129 * @param[in] u32CapMode Timer capture mode. Could be
AnnaBridge 174:b96e65c34a4d 130 * - \ref TIMER_CAPTURE_FREE_COUNTING_MODE
AnnaBridge 174:b96e65c34a4d 131 * - \ref TIMER_CAPTURE_TRIGGER_COUNTING_MODE
AnnaBridge 174:b96e65c34a4d 132 * - \ref TIMER_CAPTURE_COUNTER_RESET_MODE
AnnaBridge 174:b96e65c34a4d 133 * @param[in] u32Edge Timer capture edge. Possible values are
AnnaBridge 174:b96e65c34a4d 134 * - \ref TIMER_CAPTURE_FALLING_EDGE
AnnaBridge 174:b96e65c34a4d 135 * - \ref TIMER_CAPTURE_RISING_EDGE
AnnaBridge 174:b96e65c34a4d 136 * - \ref TIMER_CAPTURE_FALLING_THEN_RISING_EDGE
AnnaBridge 174:b96e65c34a4d 137 * - \ref TIMER_CAPTURE_RISING_THEN_FALLING_EDGE
AnnaBridge 174:b96e65c34a4d 138 * @return None
AnnaBridge 174:b96e65c34a4d 139 * @note Timer frequency should be configured separately by using \ref TIMER_Open API, or program registers directly
AnnaBridge 174:b96e65c34a4d 140 */
AnnaBridge 174:b96e65c34a4d 141 void TIMER_EnableCapture(TIMER_T *timer, uint32_t u32CapMode, uint32_t u32Edge)
AnnaBridge 174:b96e65c34a4d 142 {
AnnaBridge 174:b96e65c34a4d 143
AnnaBridge 174:b96e65c34a4d 144 timer->CTL = (timer->CTL & ~(TIMER_CTL_TCAP_MODE_Msk |
AnnaBridge 174:b96e65c34a4d 145 TIMER_CTL_TCAP_CNT_MODE_Msk |
AnnaBridge 174:b96e65c34a4d 146 TIMER_CTL_TCAP_EDGE_Msk)) |
AnnaBridge 174:b96e65c34a4d 147 u32CapMode | u32Edge | TIMER_CTL_TCAP_EN_Msk;
AnnaBridge 174:b96e65c34a4d 148 }
AnnaBridge 174:b96e65c34a4d 149
AnnaBridge 174:b96e65c34a4d 150 /**
AnnaBridge 174:b96e65c34a4d 151 * @brief This API is used to disable the Timer capture function
AnnaBridge 174:b96e65c34a4d 152 * @param[in] timer The base address of Timer module
AnnaBridge 174:b96e65c34a4d 153 * @return None
AnnaBridge 174:b96e65c34a4d 154 */
AnnaBridge 174:b96e65c34a4d 155 void TIMER_DisableCapture(TIMER_T *timer)
AnnaBridge 174:b96e65c34a4d 156 {
AnnaBridge 174:b96e65c34a4d 157 timer->CTL &= ~TIMER_CTL_TCAP_EN_Msk;
AnnaBridge 174:b96e65c34a4d 158
AnnaBridge 174:b96e65c34a4d 159 }
AnnaBridge 174:b96e65c34a4d 160
AnnaBridge 174:b96e65c34a4d 161 /**
AnnaBridge 174:b96e65c34a4d 162 * @brief This function is used to enable the Timer counter function with specify detection edge
AnnaBridge 174:b96e65c34a4d 163 * @param[in] timer The base address of Timer module
AnnaBridge 174:b96e65c34a4d 164 * @param[in] u32Edge Detection edge of counter pin. Could be ether
AnnaBridge 174:b96e65c34a4d 165 * - \ref TIMER_COUNTER_RISING_EDGE, or
AnnaBridge 174:b96e65c34a4d 166 * - \ref TIMER_COUNTER_FALLING_EDGE
AnnaBridge 174:b96e65c34a4d 167 * @return None
AnnaBridge 174:b96e65c34a4d 168 * @note Timer compare value should be configured separately by using \ref TIMER_SET_CMP_VALUE macro or program registers directly
AnnaBridge 174:b96e65c34a4d 169 */
AnnaBridge 174:b96e65c34a4d 170 void TIMER_EnableEventCounter(TIMER_T *timer, uint32_t u32Edge)
AnnaBridge 174:b96e65c34a4d 171 {
AnnaBridge 174:b96e65c34a4d 172 timer->CTL = (timer->CTL & ~TIMER_CTL_EVENT_EDGE_Msk) | u32Edge;
AnnaBridge 174:b96e65c34a4d 173 timer->CTL |= TIMER_CTL_EVENT_EN_Msk;
AnnaBridge 174:b96e65c34a4d 174 }
AnnaBridge 174:b96e65c34a4d 175
AnnaBridge 174:b96e65c34a4d 176 /**
AnnaBridge 174:b96e65c34a4d 177 * @brief This API is used to disable the Timer event counter function.
AnnaBridge 174:b96e65c34a4d 178 * @param[in] timer The base address of Timer module
AnnaBridge 174:b96e65c34a4d 179 * @return None
AnnaBridge 174:b96e65c34a4d 180 */
AnnaBridge 174:b96e65c34a4d 181 void TIMER_DisableEventCounter(TIMER_T *timer)
AnnaBridge 174:b96e65c34a4d 182 {
AnnaBridge 174:b96e65c34a4d 183 timer->CTL &= ~TIMER_CTL_EVENT_EN_Msk;
AnnaBridge 174:b96e65c34a4d 184 }
AnnaBridge 174:b96e65c34a4d 185
AnnaBridge 174:b96e65c34a4d 186 /**
AnnaBridge 174:b96e65c34a4d 187 * @brief This API is used to get the clock frequency of Timer
AnnaBridge 174:b96e65c34a4d 188 * @param[in] timer The base address of Timer module
AnnaBridge 174:b96e65c34a4d 189 * @return Timer clock frequency
AnnaBridge 174:b96e65c34a4d 190 * @note This API cannot return correct clock rate if timer source is external clock input.
AnnaBridge 174:b96e65c34a4d 191 */
AnnaBridge 174:b96e65c34a4d 192 uint32_t TIMER_GetModuleClock(TIMER_T *timer)
AnnaBridge 174:b96e65c34a4d 193 {
AnnaBridge 174:b96e65c34a4d 194 uint32_t u32Src;
AnnaBridge 174:b96e65c34a4d 195 const uint32_t au32Clk[] = {__HXT, __LXT, __LIRC, 0}; // we don't know actual clock if external pin is clock source, set to 0 here
AnnaBridge 174:b96e65c34a4d 196
AnnaBridge 174:b96e65c34a4d 197 if(timer == TIMER0)
AnnaBridge 174:b96e65c34a4d 198 u32Src = (CLK->CLKSEL1 & CLK_CLKSEL1_TMR0_S_Msk) >> CLK_CLKSEL1_TMR0_S_Pos;
AnnaBridge 174:b96e65c34a4d 199 else if(timer == TIMER1)
AnnaBridge 174:b96e65c34a4d 200 u32Src = (CLK->CLKSEL1 & CLK_CLKSEL1_TMR1_S_Msk) >> CLK_CLKSEL1_TMR1_S_Pos;
AnnaBridge 174:b96e65c34a4d 201 else if(timer == TIMER2)
AnnaBridge 174:b96e65c34a4d 202 u32Src = (CLK->CLKSEL2 & CLK_CLKSEL2_TMR2_S_Msk) >> CLK_CLKSEL2_TMR2_S_Pos;
AnnaBridge 174:b96e65c34a4d 203 else // Timer 3
AnnaBridge 174:b96e65c34a4d 204 u32Src = (CLK->CLKSEL2 & CLK_CLKSEL2_TMR3_S_Msk) >> CLK_CLKSEL2_TMR3_S_Pos;
AnnaBridge 174:b96e65c34a4d 205
AnnaBridge 174:b96e65c34a4d 206 if(u32Src < 4)
AnnaBridge 174:b96e65c34a4d 207 return au32Clk[u32Src];
AnnaBridge 174:b96e65c34a4d 208 else
AnnaBridge 174:b96e65c34a4d 209 return __HIRC;
AnnaBridge 174:b96e65c34a4d 210
AnnaBridge 174:b96e65c34a4d 211 }
AnnaBridge 174:b96e65c34a4d 212
AnnaBridge 174:b96e65c34a4d 213 /**
AnnaBridge 174:b96e65c34a4d 214 * @brief This function is used to enable the Timer frequency counter function
AnnaBridge 174:b96e65c34a4d 215 * @param[in] timer The base address of Timer module. Can be \ref TIMER0 or \ref TIMER2
AnnaBridge 174:b96e65c34a4d 216 * @param[in] u32DropCount This parameter has no effect in Nano100 series BSP
AnnaBridge 174:b96e65c34a4d 217 * @param[in] u32Timeout This parameter has no effect in Nano100 series BSP
AnnaBridge 174:b96e65c34a4d 218 * @param[in] u32EnableInt Enable interrupt assertion after capture complete or not. Valid values are TRUE and FALSE
AnnaBridge 174:b96e65c34a4d 219 * @return None
AnnaBridge 174:b96e65c34a4d 220 * @details This function is used to calculate input event frequency. After enable
AnnaBridge 174:b96e65c34a4d 221 * this function, a pair of timers, TIMER0 and TIMER1, or TIMER2 and TIMER3
AnnaBridge 174:b96e65c34a4d 222 * will be configured for this function. The mode used to calculate input
AnnaBridge 174:b96e65c34a4d 223 * event frequency is mentioned as "Inter Timer Trigger Mode" in Technical
AnnaBridge 174:b96e65c34a4d 224 * Reference Manual
AnnaBridge 174:b96e65c34a4d 225 */
AnnaBridge 174:b96e65c34a4d 226 void TIMER_EnableFreqCounter(TIMER_T *timer,
AnnaBridge 174:b96e65c34a4d 227 uint32_t u32DropCount,
AnnaBridge 174:b96e65c34a4d 228 uint32_t u32Timeout,
AnnaBridge 174:b96e65c34a4d 229 uint32_t u32EnableInt)
AnnaBridge 174:b96e65c34a4d 230 {
AnnaBridge 174:b96e65c34a4d 231 TIMER_T *t; // store the timer base to configure compare value
AnnaBridge 174:b96e65c34a4d 232
AnnaBridge 174:b96e65c34a4d 233 t = (timer == TIMER0) ? TIMER1 : TIMER3;
AnnaBridge 174:b96e65c34a4d 234
AnnaBridge 174:b96e65c34a4d 235 t->CMPR = 0xFFFFFF;
AnnaBridge 174:b96e65c34a4d 236 t->IER = u32EnableInt ? TIMER_IER_TCAP_IE_Msk : 0;
AnnaBridge 174:b96e65c34a4d 237 timer->CTL = TIMER_CTL_INTR_TRG_EN_Msk | TIMER_CTL_TMR_EN_Msk;
AnnaBridge 174:b96e65c34a4d 238
AnnaBridge 174:b96e65c34a4d 239 return;
AnnaBridge 174:b96e65c34a4d 240 }
AnnaBridge 174:b96e65c34a4d 241 /**
AnnaBridge 174:b96e65c34a4d 242 * @brief This function is used to disable the Timer frequency counter function.
AnnaBridge 174:b96e65c34a4d 243 * @param[in] timer The base address of Timer module
AnnaBridge 174:b96e65c34a4d 244 * @return None
AnnaBridge 174:b96e65c34a4d 245 */
AnnaBridge 174:b96e65c34a4d 246 void TIMER_DisableFreqCounter(TIMER_T *timer)
AnnaBridge 174:b96e65c34a4d 247 {
AnnaBridge 174:b96e65c34a4d 248 timer->CTL &= ~TIMER_CTL_INTR_TRG_EN_Msk;
AnnaBridge 174:b96e65c34a4d 249 }
AnnaBridge 174:b96e65c34a4d 250
AnnaBridge 174:b96e65c34a4d 251 /**
AnnaBridge 174:b96e65c34a4d 252 * @brief This function is used to select the interrupt source used to trigger other modules.
AnnaBridge 174:b96e65c34a4d 253 * @param[in] timer The base address of Timer module
AnnaBridge 174:b96e65c34a4d 254 * @param[in] u32Src Selects the interrupt source to trigger other modules. Could be:
AnnaBridge 174:b96e65c34a4d 255 * - \ref TIMER_TIMEOUT_TRIGGER
AnnaBridge 174:b96e65c34a4d 256 * - \ref TIMER_CAPTURE_TRIGGER
AnnaBridge 174:b96e65c34a4d 257 * @return None
AnnaBridge 174:b96e65c34a4d 258 */
AnnaBridge 174:b96e65c34a4d 259 void TIMER_SetTriggerSource(TIMER_T *timer, uint32_t u32Src)
AnnaBridge 174:b96e65c34a4d 260 {
AnnaBridge 174:b96e65c34a4d 261 timer->CTL = (timer->CTL & ~TIMER_CTL_CAP_TRG_EN_Msk) | u32Src;
AnnaBridge 174:b96e65c34a4d 262 }
AnnaBridge 174:b96e65c34a4d 263
AnnaBridge 174:b96e65c34a4d 264 /**
AnnaBridge 174:b96e65c34a4d 265 * @brief This function is used to set modules trigger by timer interrupt
AnnaBridge 174:b96e65c34a4d 266 * @param[in] timer The base address of Timer module
AnnaBridge 174:b96e65c34a4d 267 * @param[in] u32Mask The mask of modules (ADC, DAC and PDMA) trigger by timer. Is the combination of
AnnaBridge 174:b96e65c34a4d 268 * - \ref TIMER_CTL_PDMA_TEEN_Msk,
AnnaBridge 174:b96e65c34a4d 269 * - \ref TIMER_CTL_ADC_TEEN_Msk, and
AnnaBridge 174:b96e65c34a4d 270 * - \ref TIMER_CTL_DAC_TEEN_Msk,
AnnaBridge 174:b96e65c34a4d 271 * @return None
AnnaBridge 174:b96e65c34a4d 272 */
AnnaBridge 174:b96e65c34a4d 273 void TIMER_SetTriggerTarget(TIMER_T *timer, uint32_t u32Mask)
AnnaBridge 174:b96e65c34a4d 274 {
AnnaBridge 174:b96e65c34a4d 275 timer->CTL = (timer->CTL & ~(TIMER_CTL_PDMA_TEEN_Msk | TIMER_CTL_DAC_TEEN_Msk | TIMER_CTL_ADC_TEEN_Msk)) | u32Mask;
AnnaBridge 174:b96e65c34a4d 276 }
AnnaBridge 174:b96e65c34a4d 277
AnnaBridge 174:b96e65c34a4d 278 /*@}*/ /* end of group NANO100_TIMER_EXPORTED_FUNCTIONS */
AnnaBridge 174:b96e65c34a4d 279
AnnaBridge 174:b96e65c34a4d 280 /*@}*/ /* end of group NANO100_TIMER_Driver */
AnnaBridge 174:b96e65c34a4d 281
AnnaBridge 174:b96e65c34a4d 282 /*@}*/ /* end of group NANO100_Device_Driver */
AnnaBridge 174:b96e65c34a4d 283
AnnaBridge 174:b96e65c34a4d 284 /*** (C) COPYRIGHT 2014 Nuvoton Technology Corp. ***/