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_EWM_H_
AnnaBridge 161:aa5281ff4a02 35 #define _FSL_EWM_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 ewm
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 /*! @brief EWM driver version 2.0.1. */
AnnaBridge 161:aa5281ff4a02 52 #define FSL_EWM_DRIVER_VERSION (MAKE_VERSION(2, 0, 1))
AnnaBridge 161:aa5281ff4a02 53 /*@}*/
AnnaBridge 161:aa5281ff4a02 54
AnnaBridge 161:aa5281ff4a02 55 /*! @brief Describes EWM clock source. */
AnnaBridge 161:aa5281ff4a02 56 #if defined(FSL_FEATURE_EWM_HAS_CLOCK_SELECT) && FSL_FEATURE_EWM_HAS_CLOCK_SELECT
AnnaBridge 161:aa5281ff4a02 57 typedef enum _ewm_lpo_clock_source
AnnaBridge 161:aa5281ff4a02 58 {
AnnaBridge 161:aa5281ff4a02 59 kEWM_LpoClockSource0 = 0U, /*!< EWM clock sourced from lpo_clk[0]*/
AnnaBridge 161:aa5281ff4a02 60 kEWM_LpoClockSource1 = 1U, /*!< EWM clock sourced from lpo_clk[1]*/
AnnaBridge 161:aa5281ff4a02 61 kEWM_LpoClockSource2 = 2U, /*!< EWM clock sourced from lpo_clk[2]*/
AnnaBridge 161:aa5281ff4a02 62 kEWM_LpoClockSource3 = 3U, /*!< EWM clock sourced from lpo_clk[3]*/
AnnaBridge 161:aa5281ff4a02 63 } ewm_lpo_clock_source_t;
AnnaBridge 161:aa5281ff4a02 64 #endif /* FSL_FEATURE_EWM_HAS_CLOCK_SELECT */
AnnaBridge 161:aa5281ff4a02 65
AnnaBridge 161:aa5281ff4a02 66 /*!
AnnaBridge 161:aa5281ff4a02 67 * @brief Data structure for EWM configuration.
AnnaBridge 161:aa5281ff4a02 68 *
AnnaBridge 161:aa5281ff4a02 69 * This structure is used to configure the EWM.
AnnaBridge 161:aa5281ff4a02 70 */
AnnaBridge 161:aa5281ff4a02 71 typedef struct _ewm_config
AnnaBridge 161:aa5281ff4a02 72 {
AnnaBridge 161:aa5281ff4a02 73 bool enableEwm; /*!< Enable EWM module */
AnnaBridge 161:aa5281ff4a02 74 bool enableEwmInput; /*!< Enable EWM_in input */
AnnaBridge 161:aa5281ff4a02 75 bool setInputAssertLogic; /*!< EWM_in signal assertion state */
AnnaBridge 161:aa5281ff4a02 76 bool enableInterrupt; /*!< Enable EWM interrupt */
AnnaBridge 161:aa5281ff4a02 77 #if defined(FSL_FEATURE_EWM_HAS_CLOCK_SELECT) && FSL_FEATURE_EWM_HAS_CLOCK_SELECT
AnnaBridge 161:aa5281ff4a02 78 ewm_lpo_clock_source_t clockSource; /*!< Clock source select */
AnnaBridge 161:aa5281ff4a02 79 #endif /* FSL_FEATURE_EWM_HAS_CLOCK_SELECT */
AnnaBridge 161:aa5281ff4a02 80 #if defined(FSL_FEATURE_EWM_HAS_PRESCALER) && FSL_FEATURE_EWM_HAS_PRESCALER
AnnaBridge 161:aa5281ff4a02 81 uint8_t prescaler; /*!< Clock prescaler value */
AnnaBridge 161:aa5281ff4a02 82 #endif /* FSL_FEATURE_EWM_HAS_PRESCALER */
AnnaBridge 161:aa5281ff4a02 83 uint8_t compareLowValue; /*!< Compare low-register value */
AnnaBridge 161:aa5281ff4a02 84 uint8_t compareHighValue; /*!< Compare high-register value */
AnnaBridge 161:aa5281ff4a02 85 } ewm_config_t;
AnnaBridge 161:aa5281ff4a02 86
AnnaBridge 161:aa5281ff4a02 87 /*!
AnnaBridge 161:aa5281ff4a02 88 * @brief EWM interrupt configuration structure with default settings all disabled.
AnnaBridge 161:aa5281ff4a02 89 *
AnnaBridge 161:aa5281ff4a02 90 * This structure contains the settings for all of EWM interrupt configurations.
AnnaBridge 161:aa5281ff4a02 91 */
AnnaBridge 161:aa5281ff4a02 92 enum _ewm_interrupt_enable_t
AnnaBridge 161:aa5281ff4a02 93 {
AnnaBridge 161:aa5281ff4a02 94 kEWM_InterruptEnable = EWM_CTRL_INTEN_MASK, /*!< Enable the EWM to generate an interrupt*/
AnnaBridge 161:aa5281ff4a02 95 };
AnnaBridge 161:aa5281ff4a02 96
AnnaBridge 161:aa5281ff4a02 97 /*!
AnnaBridge 161:aa5281ff4a02 98 * @brief EWM status flags.
AnnaBridge 161:aa5281ff4a02 99 *
AnnaBridge 161:aa5281ff4a02 100 * This structure contains the constants for the EWM status flags for use in the EWM functions.
AnnaBridge 161:aa5281ff4a02 101 */
AnnaBridge 161:aa5281ff4a02 102 enum _ewm_status_flags_t
AnnaBridge 161:aa5281ff4a02 103 {
AnnaBridge 161:aa5281ff4a02 104 kEWM_RunningFlag = EWM_CTRL_EWMEN_MASK, /*!< Running flag, set when EWM is enabled*/
AnnaBridge 161:aa5281ff4a02 105 };
AnnaBridge 161:aa5281ff4a02 106
AnnaBridge 161:aa5281ff4a02 107 /*******************************************************************************
AnnaBridge 161:aa5281ff4a02 108 * API
AnnaBridge 161:aa5281ff4a02 109 *******************************************************************************/
AnnaBridge 161:aa5281ff4a02 110
AnnaBridge 161:aa5281ff4a02 111 #if defined(__cplusplus)
AnnaBridge 161:aa5281ff4a02 112 extern "C" {
AnnaBridge 161:aa5281ff4a02 113 #endif /* __cplusplus */
AnnaBridge 161:aa5281ff4a02 114
AnnaBridge 161:aa5281ff4a02 115 /*!
AnnaBridge 161:aa5281ff4a02 116 * @name EWM initialization and de-initialization
AnnaBridge 161:aa5281ff4a02 117 * @{
AnnaBridge 161:aa5281ff4a02 118 */
AnnaBridge 161:aa5281ff4a02 119
AnnaBridge 161:aa5281ff4a02 120 /*!
AnnaBridge 161:aa5281ff4a02 121 * @brief Initializes the EWM peripheral.
AnnaBridge 161:aa5281ff4a02 122 *
AnnaBridge 161:aa5281ff4a02 123 * This function is used to initialize the EWM. After calling, the EWM
AnnaBridge 161:aa5281ff4a02 124 * runs immediately according to the configuration.
AnnaBridge 161:aa5281ff4a02 125 * Note that, except for the interrupt enable control bit, other control bits and registers are write once after a
AnnaBridge 161:aa5281ff4a02 126 * CPU reset. Modifying them more than once generates a bus transfer error.
AnnaBridge 161:aa5281ff4a02 127 *
AnnaBridge 161:aa5281ff4a02 128 * This is an example.
AnnaBridge 161:aa5281ff4a02 129 * @code
AnnaBridge 161:aa5281ff4a02 130 * ewm_config_t config;
AnnaBridge 161:aa5281ff4a02 131 * EWM_GetDefaultConfig(&config);
AnnaBridge 161:aa5281ff4a02 132 * config.compareHighValue = 0xAAU;
AnnaBridge 161:aa5281ff4a02 133 * EWM_Init(ewm_base,&config);
AnnaBridge 161:aa5281ff4a02 134 * @endcode
AnnaBridge 161:aa5281ff4a02 135 *
AnnaBridge 161:aa5281ff4a02 136 * @param base EWM peripheral base address
AnnaBridge 161:aa5281ff4a02 137 * @param config The configuration of the EWM
AnnaBridge 161:aa5281ff4a02 138 */
AnnaBridge 161:aa5281ff4a02 139 void EWM_Init(EWM_Type *base, const ewm_config_t *config);
AnnaBridge 161:aa5281ff4a02 140
AnnaBridge 161:aa5281ff4a02 141 /*!
AnnaBridge 161:aa5281ff4a02 142 * @brief Deinitializes the EWM peripheral.
AnnaBridge 161:aa5281ff4a02 143 *
AnnaBridge 161:aa5281ff4a02 144 * This function is used to shut down the EWM.
AnnaBridge 161:aa5281ff4a02 145 *
AnnaBridge 161:aa5281ff4a02 146 * @param base EWM peripheral base address
AnnaBridge 161:aa5281ff4a02 147 */
AnnaBridge 161:aa5281ff4a02 148 void EWM_Deinit(EWM_Type *base);
AnnaBridge 161:aa5281ff4a02 149
AnnaBridge 161:aa5281ff4a02 150 /*!
AnnaBridge 161:aa5281ff4a02 151 * @brief Initializes the EWM configuration structure.
AnnaBridge 161:aa5281ff4a02 152 *
AnnaBridge 161:aa5281ff4a02 153 * This function initializes the EWM configuration structure to default values. The default
AnnaBridge 161:aa5281ff4a02 154 * values are as follows.
AnnaBridge 161:aa5281ff4a02 155 * @code
AnnaBridge 161:aa5281ff4a02 156 * ewmConfig->enableEwm = true;
AnnaBridge 161:aa5281ff4a02 157 * ewmConfig->enableEwmInput = false;
AnnaBridge 161:aa5281ff4a02 158 * ewmConfig->setInputAssertLogic = false;
AnnaBridge 161:aa5281ff4a02 159 * ewmConfig->enableInterrupt = false;
AnnaBridge 161:aa5281ff4a02 160 * ewmConfig->ewm_lpo_clock_source_t = kEWM_LpoClockSource0;
AnnaBridge 161:aa5281ff4a02 161 * ewmConfig->prescaler = 0;
AnnaBridge 161:aa5281ff4a02 162 * ewmConfig->compareLowValue = 0;
AnnaBridge 161:aa5281ff4a02 163 * ewmConfig->compareHighValue = 0xFEU;
AnnaBridge 161:aa5281ff4a02 164 * @endcode
AnnaBridge 161:aa5281ff4a02 165 *
AnnaBridge 161:aa5281ff4a02 166 * @param config Pointer to the EWM configuration structure.
AnnaBridge 161:aa5281ff4a02 167 * @see ewm_config_t
AnnaBridge 161:aa5281ff4a02 168 */
AnnaBridge 161:aa5281ff4a02 169 void EWM_GetDefaultConfig(ewm_config_t *config);
AnnaBridge 161:aa5281ff4a02 170
AnnaBridge 161:aa5281ff4a02 171 /* @} */
AnnaBridge 161:aa5281ff4a02 172
AnnaBridge 161:aa5281ff4a02 173 /*!
AnnaBridge 161:aa5281ff4a02 174 * @name EWM functional Operation
AnnaBridge 161:aa5281ff4a02 175 * @{
AnnaBridge 161:aa5281ff4a02 176 */
AnnaBridge 161:aa5281ff4a02 177
AnnaBridge 161:aa5281ff4a02 178 /*!
AnnaBridge 161:aa5281ff4a02 179 * @brief Enables the EWM interrupt.
AnnaBridge 161:aa5281ff4a02 180 *
AnnaBridge 161:aa5281ff4a02 181 * This function enables the EWM interrupt.
AnnaBridge 161:aa5281ff4a02 182 *
AnnaBridge 161:aa5281ff4a02 183 * @param base EWM peripheral base address
AnnaBridge 161:aa5281ff4a02 184 * @param mask The interrupts to enable
AnnaBridge 161:aa5281ff4a02 185 * The parameter can be combination of the following source if defined
AnnaBridge 161:aa5281ff4a02 186 * @arg kEWM_InterruptEnable
AnnaBridge 161:aa5281ff4a02 187 */
AnnaBridge 161:aa5281ff4a02 188 static inline void EWM_EnableInterrupts(EWM_Type *base, uint32_t mask)
AnnaBridge 161:aa5281ff4a02 189 {
AnnaBridge 161:aa5281ff4a02 190 base->CTRL |= mask;
AnnaBridge 161:aa5281ff4a02 191 }
AnnaBridge 161:aa5281ff4a02 192
AnnaBridge 161:aa5281ff4a02 193 /*!
AnnaBridge 161:aa5281ff4a02 194 * @brief Disables the EWM interrupt.
AnnaBridge 161:aa5281ff4a02 195 *
AnnaBridge 161:aa5281ff4a02 196 * This function enables the EWM interrupt.
AnnaBridge 161:aa5281ff4a02 197 *
AnnaBridge 161:aa5281ff4a02 198 * @param base EWM peripheral base address
AnnaBridge 161:aa5281ff4a02 199 * @param mask The interrupts to disable
AnnaBridge 161:aa5281ff4a02 200 * The parameter can be combination of the following source if defined
AnnaBridge 161:aa5281ff4a02 201 * @arg kEWM_InterruptEnable
AnnaBridge 161:aa5281ff4a02 202 */
AnnaBridge 161:aa5281ff4a02 203 static inline void EWM_DisableInterrupts(EWM_Type *base, uint32_t mask)
AnnaBridge 161:aa5281ff4a02 204 {
AnnaBridge 161:aa5281ff4a02 205 base->CTRL &= ~mask;
AnnaBridge 161:aa5281ff4a02 206 }
AnnaBridge 161:aa5281ff4a02 207
AnnaBridge 161:aa5281ff4a02 208 /*!
AnnaBridge 161:aa5281ff4a02 209 * @brief Gets all status flags.
AnnaBridge 161:aa5281ff4a02 210 *
AnnaBridge 161:aa5281ff4a02 211 * This function gets all status flags.
AnnaBridge 161:aa5281ff4a02 212 *
AnnaBridge 161:aa5281ff4a02 213 * This is an example for getting the running flag.
AnnaBridge 161:aa5281ff4a02 214 * @code
AnnaBridge 161:aa5281ff4a02 215 * uint32_t status;
AnnaBridge 161:aa5281ff4a02 216 * status = EWM_GetStatusFlags(ewm_base) & kEWM_RunningFlag;
AnnaBridge 161:aa5281ff4a02 217 * @endcode
AnnaBridge 161:aa5281ff4a02 218 * @param base EWM peripheral base address
AnnaBridge 161:aa5281ff4a02 219 * @return State of the status flag: asserted (true) or not-asserted (false).@see _ewm_status_flags_t
AnnaBridge 161:aa5281ff4a02 220 * - True: a related status flag has been set.
AnnaBridge 161:aa5281ff4a02 221 * - False: a related status flag is not set.
AnnaBridge 161:aa5281ff4a02 222 */
AnnaBridge 161:aa5281ff4a02 223 static inline uint32_t EWM_GetStatusFlags(EWM_Type *base)
AnnaBridge 161:aa5281ff4a02 224 {
AnnaBridge 161:aa5281ff4a02 225 return (base->CTRL & EWM_CTRL_EWMEN_MASK);
AnnaBridge 161:aa5281ff4a02 226 }
AnnaBridge 161:aa5281ff4a02 227
AnnaBridge 161:aa5281ff4a02 228 /*!
AnnaBridge 161:aa5281ff4a02 229 * @brief Services the EWM.
AnnaBridge 161:aa5281ff4a02 230 *
AnnaBridge 161:aa5281ff4a02 231 * This function resets the EWM counter to zero.
AnnaBridge 161:aa5281ff4a02 232 *
AnnaBridge 161:aa5281ff4a02 233 * @param base EWM peripheral base address
AnnaBridge 161:aa5281ff4a02 234 */
AnnaBridge 161:aa5281ff4a02 235 void EWM_Refresh(EWM_Type *base);
AnnaBridge 161:aa5281ff4a02 236
AnnaBridge 161:aa5281ff4a02 237 /*@}*/
AnnaBridge 161:aa5281ff4a02 238
AnnaBridge 161:aa5281ff4a02 239 #if defined(__cplusplus)
AnnaBridge 161:aa5281ff4a02 240 }
AnnaBridge 161:aa5281ff4a02 241 #endif /* __cplusplus */
AnnaBridge 161:aa5281ff4a02 242
AnnaBridge 161:aa5281ff4a02 243 /*! @}*/
AnnaBridge 161:aa5281ff4a02 244
AnnaBridge 161:aa5281ff4a02 245 #endif /* _FSL_EWM_H_ */