mbed library sources. Supersedes mbed-src.

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

Committer:
AnnaBridge
Date:
Wed Feb 20 22:31:08 2019 +0000
Revision:
189:f392fc9709a3
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 189:f392fc9709a3 1 /*
AnnaBridge 189:f392fc9709a3 2 * Copyright (c) 2015, Freescale Semiconductor, Inc.
AnnaBridge 189:f392fc9709a3 3 * All rights reserved.
AnnaBridge 189:f392fc9709a3 4 *
AnnaBridge 189:f392fc9709a3 5 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 189:f392fc9709a3 6 * are permitted provided that the following conditions are met:
AnnaBridge 189:f392fc9709a3 7 *
AnnaBridge 189:f392fc9709a3 8 * o Redistributions of source code must retain the above copyright notice, this list
AnnaBridge 189:f392fc9709a3 9 * of conditions and the following disclaimer.
AnnaBridge 189:f392fc9709a3 10 *
AnnaBridge 189:f392fc9709a3 11 * o Redistributions in binary form must reproduce the above copyright notice, this
AnnaBridge 189:f392fc9709a3 12 * list of conditions and the following disclaimer in the documentation and/or
AnnaBridge 189:f392fc9709a3 13 * other materials provided with the distribution.
AnnaBridge 189:f392fc9709a3 14 *
AnnaBridge 189:f392fc9709a3 15 * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
AnnaBridge 189:f392fc9709a3 16 * contributors may be used to endorse or promote products derived from this
AnnaBridge 189:f392fc9709a3 17 * software without specific prior written permission.
AnnaBridge 189:f392fc9709a3 18 *
AnnaBridge 189:f392fc9709a3 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
AnnaBridge 189:f392fc9709a3 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
AnnaBridge 189:f392fc9709a3 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 189:f392fc9709a3 22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
AnnaBridge 189:f392fc9709a3 23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
AnnaBridge 189:f392fc9709a3 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
AnnaBridge 189:f392fc9709a3 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
AnnaBridge 189:f392fc9709a3 26 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
AnnaBridge 189:f392fc9709a3 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
AnnaBridge 189:f392fc9709a3 28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 189:f392fc9709a3 29 */
AnnaBridge 189:f392fc9709a3 30 #ifndef _FSL_PIT_H_
AnnaBridge 189:f392fc9709a3 31 #define _FSL_PIT_H_
AnnaBridge 189:f392fc9709a3 32
AnnaBridge 189:f392fc9709a3 33 #include "fsl_common.h"
AnnaBridge 189:f392fc9709a3 34
AnnaBridge 189:f392fc9709a3 35 /*!
AnnaBridge 189:f392fc9709a3 36 * @addtogroup pit
AnnaBridge 189:f392fc9709a3 37 * @{
AnnaBridge 189:f392fc9709a3 38 */
AnnaBridge 189:f392fc9709a3 39
AnnaBridge 189:f392fc9709a3 40
AnnaBridge 189:f392fc9709a3 41 /*******************************************************************************
AnnaBridge 189:f392fc9709a3 42 * Definitions
AnnaBridge 189:f392fc9709a3 43 ******************************************************************************/
AnnaBridge 189:f392fc9709a3 44
AnnaBridge 189:f392fc9709a3 45 /*! @name Driver version */
AnnaBridge 189:f392fc9709a3 46 /*@{*/
AnnaBridge 189:f392fc9709a3 47 #define FSL_PIT_DRIVER_VERSION (MAKE_VERSION(2, 0, 0)) /*!< Version 2.0.0 */
AnnaBridge 189:f392fc9709a3 48 /*@}*/
AnnaBridge 189:f392fc9709a3 49
AnnaBridge 189:f392fc9709a3 50 /*!
AnnaBridge 189:f392fc9709a3 51 * @brief List of PIT channels
AnnaBridge 189:f392fc9709a3 52 * @note Actual number of available channels is SoC dependent
AnnaBridge 189:f392fc9709a3 53 */
AnnaBridge 189:f392fc9709a3 54 typedef enum _pit_chnl
AnnaBridge 189:f392fc9709a3 55 {
AnnaBridge 189:f392fc9709a3 56 kPIT_Chnl_0 = 0U, /*!< PIT channel number 0*/
AnnaBridge 189:f392fc9709a3 57 kPIT_Chnl_1, /*!< PIT channel number 1 */
AnnaBridge 189:f392fc9709a3 58 kPIT_Chnl_2, /*!< PIT channel number 2 */
AnnaBridge 189:f392fc9709a3 59 kPIT_Chnl_3, /*!< PIT channel number 3 */
AnnaBridge 189:f392fc9709a3 60 } pit_chnl_t;
AnnaBridge 189:f392fc9709a3 61
AnnaBridge 189:f392fc9709a3 62 /*! @brief List of PIT interrupts */
AnnaBridge 189:f392fc9709a3 63 typedef enum _pit_interrupt_enable
AnnaBridge 189:f392fc9709a3 64 {
AnnaBridge 189:f392fc9709a3 65 kPIT_TimerInterruptEnable = PIT_TCTRL_TIE_MASK, /*!< Timer interrupt enable*/
AnnaBridge 189:f392fc9709a3 66 } pit_interrupt_enable_t;
AnnaBridge 189:f392fc9709a3 67
AnnaBridge 189:f392fc9709a3 68 /*! @brief List of PIT status flags */
AnnaBridge 189:f392fc9709a3 69 typedef enum _pit_status_flags
AnnaBridge 189:f392fc9709a3 70 {
AnnaBridge 189:f392fc9709a3 71 kPIT_TimerFlag = PIT_TFLG_TIF_MASK, /*!< Timer flag */
AnnaBridge 189:f392fc9709a3 72 } pit_status_flags_t;
AnnaBridge 189:f392fc9709a3 73
AnnaBridge 189:f392fc9709a3 74 /*!
AnnaBridge 189:f392fc9709a3 75 * @brief PIT configuration structure
AnnaBridge 189:f392fc9709a3 76 *
AnnaBridge 189:f392fc9709a3 77 * This structure holds the configuration settings for the PIT peripheral. To initialize this
AnnaBridge 189:f392fc9709a3 78 * structure to reasonable defaults, call the PIT_GetDefaultConfig() function and pass a
AnnaBridge 189:f392fc9709a3 79 * pointer to your config structure instance.
AnnaBridge 189:f392fc9709a3 80 *
AnnaBridge 189:f392fc9709a3 81 * The configuration structure can be made constant so it resides in flash.
AnnaBridge 189:f392fc9709a3 82 */
AnnaBridge 189:f392fc9709a3 83 typedef struct _pit_config
AnnaBridge 189:f392fc9709a3 84 {
AnnaBridge 189:f392fc9709a3 85 bool enableRunInDebug; /*!< true: Timers run in debug mode; false: Timers stop in debug mode */
AnnaBridge 189:f392fc9709a3 86 } pit_config_t;
AnnaBridge 189:f392fc9709a3 87
AnnaBridge 189:f392fc9709a3 88 /*******************************************************************************
AnnaBridge 189:f392fc9709a3 89 * API
AnnaBridge 189:f392fc9709a3 90 ******************************************************************************/
AnnaBridge 189:f392fc9709a3 91
AnnaBridge 189:f392fc9709a3 92 #if defined(__cplusplus)
AnnaBridge 189:f392fc9709a3 93 extern "C" {
AnnaBridge 189:f392fc9709a3 94 #endif
AnnaBridge 189:f392fc9709a3 95
AnnaBridge 189:f392fc9709a3 96 /*!
AnnaBridge 189:f392fc9709a3 97 * @name Initialization and deinitialization
AnnaBridge 189:f392fc9709a3 98 * @{
AnnaBridge 189:f392fc9709a3 99 */
AnnaBridge 189:f392fc9709a3 100
AnnaBridge 189:f392fc9709a3 101 /*!
AnnaBridge 189:f392fc9709a3 102 * @brief Ungates the PIT clock, enables the PIT module, and configures the peripheral for basic operations.
AnnaBridge 189:f392fc9709a3 103 *
AnnaBridge 189:f392fc9709a3 104 * @note This API should be called at the beginning of the application using the PIT driver.
AnnaBridge 189:f392fc9709a3 105 *
AnnaBridge 189:f392fc9709a3 106 * @param base PIT peripheral base address
AnnaBridge 189:f392fc9709a3 107 * @param config Pointer to the user's PIT config structure
AnnaBridge 189:f392fc9709a3 108 */
AnnaBridge 189:f392fc9709a3 109 void PIT_Init(PIT_Type *base, const pit_config_t *config);
AnnaBridge 189:f392fc9709a3 110
AnnaBridge 189:f392fc9709a3 111 /*!
AnnaBridge 189:f392fc9709a3 112 * @brief Gates the PIT clock and disables the PIT module.
AnnaBridge 189:f392fc9709a3 113 *
AnnaBridge 189:f392fc9709a3 114 * @param base PIT peripheral base address
AnnaBridge 189:f392fc9709a3 115 */
AnnaBridge 189:f392fc9709a3 116 void PIT_Deinit(PIT_Type *base);
AnnaBridge 189:f392fc9709a3 117
AnnaBridge 189:f392fc9709a3 118 /*!
AnnaBridge 189:f392fc9709a3 119 * @brief Fills in the PIT configuration structure with the default settings.
AnnaBridge 189:f392fc9709a3 120 *
AnnaBridge 189:f392fc9709a3 121 * The default values are as follows.
AnnaBridge 189:f392fc9709a3 122 * @code
AnnaBridge 189:f392fc9709a3 123 * config->enableRunInDebug = false;
AnnaBridge 189:f392fc9709a3 124 * @endcode
AnnaBridge 189:f392fc9709a3 125 * @param config Pointer to the onfiguration structure.
AnnaBridge 189:f392fc9709a3 126 */
AnnaBridge 189:f392fc9709a3 127 static inline void PIT_GetDefaultConfig(pit_config_t *config)
AnnaBridge 189:f392fc9709a3 128 {
AnnaBridge 189:f392fc9709a3 129 assert(config);
AnnaBridge 189:f392fc9709a3 130
AnnaBridge 189:f392fc9709a3 131 /* Timers are stopped in Debug mode */
AnnaBridge 189:f392fc9709a3 132 config->enableRunInDebug = false;
AnnaBridge 189:f392fc9709a3 133 }
AnnaBridge 189:f392fc9709a3 134
AnnaBridge 189:f392fc9709a3 135 #if defined(FSL_FEATURE_PIT_HAS_CHAIN_MODE) && FSL_FEATURE_PIT_HAS_CHAIN_MODE
AnnaBridge 189:f392fc9709a3 136
AnnaBridge 189:f392fc9709a3 137 /*!
AnnaBridge 189:f392fc9709a3 138 * @brief Enables or disables chaining a timer with the previous timer.
AnnaBridge 189:f392fc9709a3 139 *
AnnaBridge 189:f392fc9709a3 140 * When a timer has a chain mode enabled, it only counts after the previous
AnnaBridge 189:f392fc9709a3 141 * timer has expired. If the timer n-1 has counted down to 0, counter n
AnnaBridge 189:f392fc9709a3 142 * decrements the value by one. Each timer is 32-bits, which allows the developers
AnnaBridge 189:f392fc9709a3 143 * to chain timers together and form a longer timer (64-bits and larger). The first timer
AnnaBridge 189:f392fc9709a3 144 * (timer 0) can't be chained to any other timer.
AnnaBridge 189:f392fc9709a3 145 *
AnnaBridge 189:f392fc9709a3 146 * @param base PIT peripheral base address
AnnaBridge 189:f392fc9709a3 147 * @param channel Timer channel number which is chained with the previous timer
AnnaBridge 189:f392fc9709a3 148 * @param enable Enable or disable chain.
AnnaBridge 189:f392fc9709a3 149 * true: Current timer is chained with the previous timer.
AnnaBridge 189:f392fc9709a3 150 * false: Timer doesn't chain with other timers.
AnnaBridge 189:f392fc9709a3 151 */
AnnaBridge 189:f392fc9709a3 152 static inline void PIT_SetTimerChainMode(PIT_Type *base, pit_chnl_t channel, bool enable)
AnnaBridge 189:f392fc9709a3 153 {
AnnaBridge 189:f392fc9709a3 154 if (enable)
AnnaBridge 189:f392fc9709a3 155 {
AnnaBridge 189:f392fc9709a3 156 base->CHANNEL[channel].TCTRL |= PIT_TCTRL_CHN_MASK;
AnnaBridge 189:f392fc9709a3 157 }
AnnaBridge 189:f392fc9709a3 158 else
AnnaBridge 189:f392fc9709a3 159 {
AnnaBridge 189:f392fc9709a3 160 base->CHANNEL[channel].TCTRL &= ~PIT_TCTRL_CHN_MASK;
AnnaBridge 189:f392fc9709a3 161 }
AnnaBridge 189:f392fc9709a3 162 }
AnnaBridge 189:f392fc9709a3 163
AnnaBridge 189:f392fc9709a3 164 #endif /* FSL_FEATURE_PIT_HAS_CHAIN_MODE */
AnnaBridge 189:f392fc9709a3 165
AnnaBridge 189:f392fc9709a3 166 /*! @}*/
AnnaBridge 189:f392fc9709a3 167
AnnaBridge 189:f392fc9709a3 168 /*!
AnnaBridge 189:f392fc9709a3 169 * @name Interrupt Interface
AnnaBridge 189:f392fc9709a3 170 * @{
AnnaBridge 189:f392fc9709a3 171 */
AnnaBridge 189:f392fc9709a3 172
AnnaBridge 189:f392fc9709a3 173 /*!
AnnaBridge 189:f392fc9709a3 174 * @brief Enables the selected PIT interrupts.
AnnaBridge 189:f392fc9709a3 175 *
AnnaBridge 189:f392fc9709a3 176 * @param base PIT peripheral base address
AnnaBridge 189:f392fc9709a3 177 * @param channel Timer channel number
AnnaBridge 189:f392fc9709a3 178 * @param mask The interrupts to enable. This is a logical OR of members of the
AnnaBridge 189:f392fc9709a3 179 * enumeration ::pit_interrupt_enable_t
AnnaBridge 189:f392fc9709a3 180 */
AnnaBridge 189:f392fc9709a3 181 static inline void PIT_EnableInterrupts(PIT_Type *base, pit_chnl_t channel, uint32_t mask)
AnnaBridge 189:f392fc9709a3 182 {
AnnaBridge 189:f392fc9709a3 183 base->CHANNEL[channel].TCTRL |= mask;
AnnaBridge 189:f392fc9709a3 184 }
AnnaBridge 189:f392fc9709a3 185
AnnaBridge 189:f392fc9709a3 186 /*!
AnnaBridge 189:f392fc9709a3 187 * @brief Disables the selected PIT interrupts.
AnnaBridge 189:f392fc9709a3 188 *
AnnaBridge 189:f392fc9709a3 189 * @param base PIT peripheral base address
AnnaBridge 189:f392fc9709a3 190 * @param channel Timer channel number
AnnaBridge 189:f392fc9709a3 191 * @param mask The interrupts to disable. This is a logical OR of members of the
AnnaBridge 189:f392fc9709a3 192 * enumeration ::pit_interrupt_enable_t
AnnaBridge 189:f392fc9709a3 193 */
AnnaBridge 189:f392fc9709a3 194 static inline void PIT_DisableInterrupts(PIT_Type *base, pit_chnl_t channel, uint32_t mask)
AnnaBridge 189:f392fc9709a3 195 {
AnnaBridge 189:f392fc9709a3 196 base->CHANNEL[channel].TCTRL &= ~mask;
AnnaBridge 189:f392fc9709a3 197 }
AnnaBridge 189:f392fc9709a3 198
AnnaBridge 189:f392fc9709a3 199 /*!
AnnaBridge 189:f392fc9709a3 200 * @brief Gets the enabled PIT interrupts.
AnnaBridge 189:f392fc9709a3 201 *
AnnaBridge 189:f392fc9709a3 202 * @param base PIT peripheral base address
AnnaBridge 189:f392fc9709a3 203 * @param channel Timer channel number
AnnaBridge 189:f392fc9709a3 204 *
AnnaBridge 189:f392fc9709a3 205 * @return The enabled interrupts. This is the logical OR of members of the
AnnaBridge 189:f392fc9709a3 206 * enumeration ::pit_interrupt_enable_t
AnnaBridge 189:f392fc9709a3 207 */
AnnaBridge 189:f392fc9709a3 208 static inline uint32_t PIT_GetEnabledInterrupts(PIT_Type *base, pit_chnl_t channel)
AnnaBridge 189:f392fc9709a3 209 {
AnnaBridge 189:f392fc9709a3 210 return (base->CHANNEL[channel].TCTRL & PIT_TCTRL_TIE_MASK);
AnnaBridge 189:f392fc9709a3 211 }
AnnaBridge 189:f392fc9709a3 212
AnnaBridge 189:f392fc9709a3 213 /*! @}*/
AnnaBridge 189:f392fc9709a3 214
AnnaBridge 189:f392fc9709a3 215 /*!
AnnaBridge 189:f392fc9709a3 216 * @name Status Interface
AnnaBridge 189:f392fc9709a3 217 * @{
AnnaBridge 189:f392fc9709a3 218 */
AnnaBridge 189:f392fc9709a3 219
AnnaBridge 189:f392fc9709a3 220 /*!
AnnaBridge 189:f392fc9709a3 221 * @brief Gets the PIT status flags.
AnnaBridge 189:f392fc9709a3 222 *
AnnaBridge 189:f392fc9709a3 223 * @param base PIT peripheral base address
AnnaBridge 189:f392fc9709a3 224 * @param channel Timer channel number
AnnaBridge 189:f392fc9709a3 225 *
AnnaBridge 189:f392fc9709a3 226 * @return The status flags. This is the logical OR of members of the
AnnaBridge 189:f392fc9709a3 227 * enumeration ::pit_status_flags_t
AnnaBridge 189:f392fc9709a3 228 */
AnnaBridge 189:f392fc9709a3 229 static inline uint32_t PIT_GetStatusFlags(PIT_Type *base, pit_chnl_t channel)
AnnaBridge 189:f392fc9709a3 230 {
AnnaBridge 189:f392fc9709a3 231 return (base->CHANNEL[channel].TFLG & PIT_TFLG_TIF_MASK);
AnnaBridge 189:f392fc9709a3 232 }
AnnaBridge 189:f392fc9709a3 233
AnnaBridge 189:f392fc9709a3 234 /*!
AnnaBridge 189:f392fc9709a3 235 * @brief Clears the PIT status flags.
AnnaBridge 189:f392fc9709a3 236 *
AnnaBridge 189:f392fc9709a3 237 * @param base PIT peripheral base address
AnnaBridge 189:f392fc9709a3 238 * @param channel Timer channel number
AnnaBridge 189:f392fc9709a3 239 * @param mask The status flags to clear. This is a logical OR of members of the
AnnaBridge 189:f392fc9709a3 240 * enumeration ::pit_status_flags_t
AnnaBridge 189:f392fc9709a3 241 */
AnnaBridge 189:f392fc9709a3 242 static inline void PIT_ClearStatusFlags(PIT_Type *base, pit_chnl_t channel, uint32_t mask)
AnnaBridge 189:f392fc9709a3 243 {
AnnaBridge 189:f392fc9709a3 244 base->CHANNEL[channel].TFLG = mask;
AnnaBridge 189:f392fc9709a3 245 }
AnnaBridge 189:f392fc9709a3 246
AnnaBridge 189:f392fc9709a3 247 /*! @}*/
AnnaBridge 189:f392fc9709a3 248
AnnaBridge 189:f392fc9709a3 249 /*!
AnnaBridge 189:f392fc9709a3 250 * @name Read and Write the timer period
AnnaBridge 189:f392fc9709a3 251 * @{
AnnaBridge 189:f392fc9709a3 252 */
AnnaBridge 189:f392fc9709a3 253
AnnaBridge 189:f392fc9709a3 254 /*!
AnnaBridge 189:f392fc9709a3 255 * @brief Sets the timer period in units of count.
AnnaBridge 189:f392fc9709a3 256 *
AnnaBridge 189:f392fc9709a3 257 * Timers begin counting from the value set by this function until it reaches 0,
AnnaBridge 189:f392fc9709a3 258 * then it generates an interrupt and load this register value again.
AnnaBridge 189:f392fc9709a3 259 * Writing a new value to this register does not restart the timer. Instead, the value
AnnaBridge 189:f392fc9709a3 260 * is loaded after the timer expires.
AnnaBridge 189:f392fc9709a3 261 *
AnnaBridge 189:f392fc9709a3 262 * @note Users can call the utility macros provided in fsl_common.h to convert to ticks.
AnnaBridge 189:f392fc9709a3 263 *
AnnaBridge 189:f392fc9709a3 264 * @param base PIT peripheral base address
AnnaBridge 189:f392fc9709a3 265 * @param channel Timer channel number
AnnaBridge 189:f392fc9709a3 266 * @param count Timer period in units of ticks
AnnaBridge 189:f392fc9709a3 267 */
AnnaBridge 189:f392fc9709a3 268 static inline void PIT_SetTimerPeriod(PIT_Type *base, pit_chnl_t channel, uint32_t count)
AnnaBridge 189:f392fc9709a3 269 {
AnnaBridge 189:f392fc9709a3 270 base->CHANNEL[channel].LDVAL = count;
AnnaBridge 189:f392fc9709a3 271 }
AnnaBridge 189:f392fc9709a3 272
AnnaBridge 189:f392fc9709a3 273 /*!
AnnaBridge 189:f392fc9709a3 274 * @brief Reads the current timer counting value.
AnnaBridge 189:f392fc9709a3 275 *
AnnaBridge 189:f392fc9709a3 276 * This function returns the real-time timer counting value, in a range from 0 to a
AnnaBridge 189:f392fc9709a3 277 * timer period.
AnnaBridge 189:f392fc9709a3 278 *
AnnaBridge 189:f392fc9709a3 279 * @note Users can call the utility macros provided in fsl_common.h to convert ticks to usec or msec.
AnnaBridge 189:f392fc9709a3 280 *
AnnaBridge 189:f392fc9709a3 281 * @param base PIT peripheral base address
AnnaBridge 189:f392fc9709a3 282 * @param channel Timer channel number
AnnaBridge 189:f392fc9709a3 283 *
AnnaBridge 189:f392fc9709a3 284 * @return Current timer counting value in ticks
AnnaBridge 189:f392fc9709a3 285 */
AnnaBridge 189:f392fc9709a3 286 static inline uint32_t PIT_GetCurrentTimerCount(PIT_Type *base, pit_chnl_t channel)
AnnaBridge 189:f392fc9709a3 287 {
AnnaBridge 189:f392fc9709a3 288 return base->CHANNEL[channel].CVAL;
AnnaBridge 189:f392fc9709a3 289 }
AnnaBridge 189:f392fc9709a3 290
AnnaBridge 189:f392fc9709a3 291 /*! @}*/
AnnaBridge 189:f392fc9709a3 292
AnnaBridge 189:f392fc9709a3 293 /*!
AnnaBridge 189:f392fc9709a3 294 * @name Timer Start and Stop
AnnaBridge 189:f392fc9709a3 295 * @{
AnnaBridge 189:f392fc9709a3 296 */
AnnaBridge 189:f392fc9709a3 297
AnnaBridge 189:f392fc9709a3 298 /*!
AnnaBridge 189:f392fc9709a3 299 * @brief Starts the timer counting.
AnnaBridge 189:f392fc9709a3 300 *
AnnaBridge 189:f392fc9709a3 301 * After calling this function, timers load period value, count down to 0 and
AnnaBridge 189:f392fc9709a3 302 * then load the respective start value again. Each time a timer reaches 0,
AnnaBridge 189:f392fc9709a3 303 * it generates a trigger pulse and sets the timeout interrupt flag.
AnnaBridge 189:f392fc9709a3 304 *
AnnaBridge 189:f392fc9709a3 305 * @param base PIT peripheral base address
AnnaBridge 189:f392fc9709a3 306 * @param channel Timer channel number.
AnnaBridge 189:f392fc9709a3 307 */
AnnaBridge 189:f392fc9709a3 308 static inline void PIT_StartTimer(PIT_Type *base, pit_chnl_t channel)
AnnaBridge 189:f392fc9709a3 309 {
AnnaBridge 189:f392fc9709a3 310 base->CHANNEL[channel].TCTRL |= PIT_TCTRL_TEN_MASK;
AnnaBridge 189:f392fc9709a3 311 }
AnnaBridge 189:f392fc9709a3 312
AnnaBridge 189:f392fc9709a3 313 /*!
AnnaBridge 189:f392fc9709a3 314 * @brief Stops the timer counting.
AnnaBridge 189:f392fc9709a3 315 *
AnnaBridge 189:f392fc9709a3 316 * This function stops every timer counting. Timers reload their periods
AnnaBridge 189:f392fc9709a3 317 * respectively after the next time they call the PIT_DRV_StartTimer.
AnnaBridge 189:f392fc9709a3 318 *
AnnaBridge 189:f392fc9709a3 319 * @param base PIT peripheral base address
AnnaBridge 189:f392fc9709a3 320 * @param channel Timer channel number.
AnnaBridge 189:f392fc9709a3 321 */
AnnaBridge 189:f392fc9709a3 322 static inline void PIT_StopTimer(PIT_Type *base, pit_chnl_t channel)
AnnaBridge 189:f392fc9709a3 323 {
AnnaBridge 189:f392fc9709a3 324 base->CHANNEL[channel].TCTRL &= ~PIT_TCTRL_TEN_MASK;
AnnaBridge 189:f392fc9709a3 325 }
AnnaBridge 189:f392fc9709a3 326
AnnaBridge 189:f392fc9709a3 327 /*! @}*/
AnnaBridge 189:f392fc9709a3 328
AnnaBridge 189:f392fc9709a3 329 #if defined(FSL_FEATURE_PIT_HAS_LIFETIME_TIMER) && FSL_FEATURE_PIT_HAS_LIFETIME_TIMER
AnnaBridge 189:f392fc9709a3 330
AnnaBridge 189:f392fc9709a3 331 /*!
AnnaBridge 189:f392fc9709a3 332 * @brief Reads the current lifetime counter value.
AnnaBridge 189:f392fc9709a3 333 *
AnnaBridge 189:f392fc9709a3 334 * The lifetime timer is a 64-bit timer which chains timer 0 and timer 1 together.
AnnaBridge 189:f392fc9709a3 335 * Timer 0 and 1 are chained by calling the PIT_SetTimerChainMode before using this timer.
AnnaBridge 189:f392fc9709a3 336 * The period of lifetime timer is equal to the "period of timer 0 * period of timer 1".
AnnaBridge 189:f392fc9709a3 337 * For the 64-bit value, the higher 32-bit has the value of timer 1, and the lower 32-bit
AnnaBridge 189:f392fc9709a3 338 * has the value of timer 0.
AnnaBridge 189:f392fc9709a3 339 *
AnnaBridge 189:f392fc9709a3 340 * @param base PIT peripheral base address
AnnaBridge 189:f392fc9709a3 341 *
AnnaBridge 189:f392fc9709a3 342 * @return Current lifetime timer value
AnnaBridge 189:f392fc9709a3 343 */
AnnaBridge 189:f392fc9709a3 344 uint64_t PIT_GetLifetimeTimerCount(PIT_Type *base);
AnnaBridge 189:f392fc9709a3 345
AnnaBridge 189:f392fc9709a3 346 #endif /* FSL_FEATURE_PIT_HAS_LIFETIME_TIMER */
AnnaBridge 189:f392fc9709a3 347
AnnaBridge 189:f392fc9709a3 348 #if defined(__cplusplus)
AnnaBridge 189:f392fc9709a3 349 }
AnnaBridge 189:f392fc9709a3 350 #endif
AnnaBridge 189:f392fc9709a3 351
AnnaBridge 189:f392fc9709a3 352 /*! @}*/
AnnaBridge 189:f392fc9709a3 353
AnnaBridge 189:f392fc9709a3 354 #endif /* _FSL_PIT_H_ */