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:
Wed Feb 20 20:53:29 2019 +0000
Revision:
172:65be27845400
Parent:
171:3a7713b1edbc
mbed library release version 165

Who changed what in which revision?

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