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.
Diff: TARGET_KL43Z/TOOLCHAIN_IAR/fsl_cop.h
- Revision:
- 171:3a7713b1edbc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TARGET_KL43Z/TOOLCHAIN_IAR/fsl_cop.h Thu Nov 08 11:45:42 2018 +0000 @@ -0,0 +1,188 @@ +/* + * Copyright (c) 2015, Freescale Semiconductor, Inc. + * All rights reserved. + * + * 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 Freescale Semiconductor, Inc. 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_COP_H_ +#define _FSL_COP_H_ + +#include "fsl_common.h" + +/*! + * @addtogroup cop_driver + * @{ + */ + +/*! @file */ + +/******************************************************************************* + * Definitions + *******************************************************************************/ + +/*! @name Driver version */ +/*@{*/ +/*! @brief COP driver version 2.0.0. */ +#define FSL_COP_DRIVER_VERSION (MAKE_VERSION(2, 0, 0)) +/*@}*/ + +/*! @name COP refresh sequence. */ +/*@{*/ +#define COP_FIRST_BYTE_OF_REFRESH (0x55U) /*!< First byte of refresh sequence */ +#define COP_SECOND_BYTE_OF_REFRESH (0xAAU) /*!< Second byte of refresh sequence */ +/*@}*/ + +/*! @brief COP clock source selection. */ +typedef enum _cop_clock_source +{ + kCOP_LpoClock = 0U, /*!< COP clock sourced from LPO */ +#if defined(FSL_FEATURE_COP_HAS_MORE_CLKSRC) && FSL_FEATURE_COP_HAS_MORE_CLKSRC + kCOP_McgIrClock = 1U, /*!< COP clock sourced from MCGIRCLK */ + kCOP_OscErClock = 2U, /*!< COP clock sourced from OSCERCLK */ +#endif /* FSL_FEATURE_COP_HAS_MORE_CLKSRC */ + kCOP_BusClock = 3U, /*!< COP clock sourced from Bus clock */ +} cop_clock_source_t; + +/*! @brief Define the COP timeout cycles. */ +typedef enum _cop_timeout_cycles +{ + kCOP_2Power5CyclesOr2Power13Cycles = 1U, /*!< 2^5 or 2^13 clock cycles */ + kCOP_2Power8CyclesOr2Power16Cycles = 2U, /*!< 2^8 or 2^16 clock cycles */ + kCOP_2Power10CyclesOr2Power18Cycles = 3U, /*!< 2^10 or 2^18 clock cycles */ +} cop_timeout_cycles_t; + +#if defined(FSL_FEATURE_COP_HAS_LONGTIME_MODE) && FSL_FEATURE_COP_HAS_LONGTIME_MODE +/*! @breif Define the COP timeout mode. */ +typedef enum _cop_timeout_mode +{ + kCOP_ShortTimeoutMode = 0U, /*!< COP selects long timeout */ + kCOP_LongTimeoutMode = 1U, /*!< COP selects short timeout */ +} cop_timeout_mode_t; +#endif /* FSL_FEATURE_COP_HAS_LONGTIME_MODE */ + +/*! @brief Describes COP configuration structure. */ +typedef struct _cop_config +{ + bool enableWindowMode; /*!< COP run mode: window mode or normal mode */ +#if defined(FSL_FEATURE_COP_HAS_LONGTIME_MODE) && FSL_FEATURE_COP_HAS_LONGTIME_MODE + cop_timeout_mode_t timeoutMode; /*!< COP timeout mode: long timeout or short timeout */ + bool enableStop; /*!< Enable or disable COP in STOP mode */ + bool enableDebug; /*!< Enable or disable COP in DEBUG mode */ +#endif /* FSL_FEATURE_COP_HAS_LONGTIME_MODE */ + cop_clock_source_t clockSource; /*!< Set COP clock source */ + cop_timeout_cycles_t timeoutCycles; /*!< Set COP timeout value */ +} cop_config_t; + +/******************************************************************************* + * API + *******************************************************************************/ + +#if defined(__cplusplus) +extern "C" { +#endif /* __cplusplus*/ + +/*! + * @name COP Functional Operation + * @{ + */ + +/*! + * @brief Initializes the COP configuration structure. + * + * This function initializes the COP configuration structure to default values. The default + * values are: + * @code + * copConfig->enableWindowMode = false; + * copConfig->timeoutMode = kCOP_LongTimeoutMode; + * copConfig->enableStop = false; + * copConfig->enableDebug = false; + * copConfig->clockSource = kCOP_LpoClock; + * copConfig->timeoutCycles = kCOP_2Power10CyclesOr2Power18Cycles; + * @endcode + * + * @param config Pointer to the COP configuration structure. + * @see cop_config_t + */ +void COP_GetDefaultConfig(cop_config_t *config); + +/*! + * @brief Initializes the COP module. + * + * This function configures the COP. After it is called, the COP + * starts running according to the configuration. + * Because all COP control registers are write-once only, the COP_Init function + * and the COP_Disable function can be called only once. A second call has no effect. + * + * Example: + * @code + * cop_config_t config; + * COP_GetDefaultConfig(&config); + * config.timeoutCycles = kCOP_2Power8CyclesOr2Power16Cycles; + * COP_Init(sim_base,&config); + * @endcode + * + * @param base SIM peripheral base address. + * @param config The configuration of COP. + */ +void COP_Init(SIM_Type *base, const cop_config_t *config); + +/*! + * @brief De-initializes the COP module. + * This dedicated function is not provided. Instead, the COP_Disable function can be used to disable the COP. + */ + +/*! + * @brief Disables the COP module. + * + * This function disables the COP Watchdog. + * Note: The COP configuration register is a write-once after reset. + * To disable the COP Watchdog, call this function first. + * + * @param base SIM peripheral base address. + */ +static inline void COP_Disable(SIM_Type *base) +{ + base->COPC &= ~SIM_COPC_COPT_MASK; +} + +/*! + * @brief Refreshes the COP timer + * + * This function feeds the COP. + * + * @param base SIM peripheral base address. + */ +void COP_Refresh(SIM_Type *base); + +/*@}*/ + +#if defined(__cplusplus) +} +#endif /* __cplusplus */ + +/*! @}*/ + +#endif /* _FSL_COP_H_ */