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.
TARGET_K66F/TOOLCHAIN_IAR/fsl_ewm.h
- Committer:
- AnnaBridge
- Date:
- 2018-11-08
- Revision:
- 171:3a7713b1edbc
- Parent:
- TARGET_RO359B/TARGET_Freescale/TARGET_MCUXpresso_MCUS/TARGET_MCU_K24F/drivers/fsl_ewm.h@ 143:86740a56073b
File content as of revision 171:3a7713b1edbc:
/* * Copyright (c) 2015, Freescale Semiconductor, Inc. * Copyright 2016-2017 NXP * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * o Redistributions of source code must retain the above copyright notice, this list * of conditions and the following disclaimer. * * o Redistributions in binary form must reproduce the above copyright notice, this * list of conditions and the following disclaimer in the documentation and/or * other materials provided with the distribution. * * o Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived from this * software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _FSL_EWM_H_ #define _FSL_EWM_H_ #include "fsl_common.h" /*! * @addtogroup ewm * @{ */ /******************************************************************************* * Definitions *******************************************************************************/ /*! @name Driver version */ /*@{*/ /*! @brief EWM driver version 2.0.1. */ #define FSL_EWM_DRIVER_VERSION (MAKE_VERSION(2, 0, 1)) /*@}*/ /*! @brief Describes EWM clock source. */ #if defined(FSL_FEATURE_EWM_HAS_CLOCK_SELECT) && FSL_FEATURE_EWM_HAS_CLOCK_SELECT typedef enum _ewm_lpo_clock_source { kEWM_LpoClockSource0 = 0U, /*!< EWM clock sourced from lpo_clk[0]*/ kEWM_LpoClockSource1 = 1U, /*!< EWM clock sourced from lpo_clk[1]*/ kEWM_LpoClockSource2 = 2U, /*!< EWM clock sourced from lpo_clk[2]*/ kEWM_LpoClockSource3 = 3U, /*!< EWM clock sourced from lpo_clk[3]*/ } ewm_lpo_clock_source_t; #endif /* FSL_FEATURE_EWM_HAS_CLOCK_SELECT */ /*! * @brief Data structure for EWM configuration. * * This structure is used to configure the EWM. */ typedef struct _ewm_config { bool enableEwm; /*!< Enable EWM module */ bool enableEwmInput; /*!< Enable EWM_in input */ bool setInputAssertLogic; /*!< EWM_in signal assertion state */ bool enableInterrupt; /*!< Enable EWM interrupt */ #if defined(FSL_FEATURE_EWM_HAS_CLOCK_SELECT) && FSL_FEATURE_EWM_HAS_CLOCK_SELECT ewm_lpo_clock_source_t clockSource; /*!< Clock source select */ #endif /* FSL_FEATURE_EWM_HAS_CLOCK_SELECT */ #if defined(FSL_FEATURE_EWM_HAS_PRESCALER) && FSL_FEATURE_EWM_HAS_PRESCALER uint8_t prescaler; /*!< Clock prescaler value */ #endif /* FSL_FEATURE_EWM_HAS_PRESCALER */ uint8_t compareLowValue; /*!< Compare low-register value */ uint8_t compareHighValue; /*!< Compare high-register value */ } ewm_config_t; /*! * @brief EWM interrupt configuration structure with default settings all disabled. * * This structure contains the settings for all of EWM interrupt configurations. */ enum _ewm_interrupt_enable_t { kEWM_InterruptEnable = EWM_CTRL_INTEN_MASK, /*!< Enable the EWM to generate an interrupt*/ }; /*! * @brief EWM status flags. * * This structure contains the constants for the EWM status flags for use in the EWM functions. */ enum _ewm_status_flags_t { kEWM_RunningFlag = EWM_CTRL_EWMEN_MASK, /*!< Running flag, set when EWM is enabled*/ }; /******************************************************************************* * API *******************************************************************************/ #if defined(__cplusplus) extern "C" { #endif /* __cplusplus */ /*! * @name EWM initialization and de-initialization * @{ */ /*! * @brief Initializes the EWM peripheral. * * This function is used to initialize the EWM. After calling, the EWM * runs immediately according to the configuration. * Note that, except for the interrupt enable control bit, other control bits and registers are write once after a * CPU reset. Modifying them more than once generates a bus transfer error. * * This is an example. * @code * ewm_config_t config; * EWM_GetDefaultConfig(&config); * config.compareHighValue = 0xAAU; * EWM_Init(ewm_base,&config); * @endcode * * @param base EWM peripheral base address * @param config The configuration of the EWM */ void EWM_Init(EWM_Type *base, const ewm_config_t *config); /*! * @brief Deinitializes the EWM peripheral. * * This function is used to shut down the EWM. * * @param base EWM peripheral base address */ void EWM_Deinit(EWM_Type *base); /*! * @brief Initializes the EWM configuration structure. * * This function initializes the EWM configuration structure to default values. The default * values are as follows. * @code * ewmConfig->enableEwm = true; * ewmConfig->enableEwmInput = false; * ewmConfig->setInputAssertLogic = false; * ewmConfig->enableInterrupt = false; * ewmConfig->ewm_lpo_clock_source_t = kEWM_LpoClockSource0; * ewmConfig->prescaler = 0; * ewmConfig->compareLowValue = 0; * ewmConfig->compareHighValue = 0xFEU; * @endcode * * @param config Pointer to the EWM configuration structure. * @see ewm_config_t */ void EWM_GetDefaultConfig(ewm_config_t *config); /* @} */ /*! * @name EWM functional Operation * @{ */ /*! * @brief Enables the EWM interrupt. * * This function enables the EWM interrupt. * * @param base EWM peripheral base address * @param mask The interrupts to enable * The parameter can be combination of the following source if defined * @arg kEWM_InterruptEnable */ static inline void EWM_EnableInterrupts(EWM_Type *base, uint32_t mask) { base->CTRL |= mask; } /*! * @brief Disables the EWM interrupt. * * This function enables the EWM interrupt. * * @param base EWM peripheral base address * @param mask The interrupts to disable * The parameter can be combination of the following source if defined * @arg kEWM_InterruptEnable */ static inline void EWM_DisableInterrupts(EWM_Type *base, uint32_t mask) { base->CTRL &= ~mask; } /*! * @brief Gets all status flags. * * This function gets all status flags. * * This is an example for getting the running flag. * @code * uint32_t status; * status = EWM_GetStatusFlags(ewm_base) & kEWM_RunningFlag; * @endcode * @param base EWM peripheral base address * @return State of the status flag: asserted (true) or not-asserted (false).@see _ewm_status_flags_t * - True: a related status flag has been set. * - False: a related status flag is not set. */ static inline uint32_t EWM_GetStatusFlags(EWM_Type *base) { return (base->CTRL & EWM_CTRL_EWMEN_MASK); } /*! * @brief Services the EWM. * * This function resets the EWM counter to zero. * * @param base EWM peripheral base address */ void EWM_Refresh(EWM_Type *base); /*@}*/ #if defined(__cplusplus) } #endif /* __cplusplus */ /*! @}*/ #endif /* _FSL_EWM_H_ */