123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #include "fsl_ewm.h"
- void EWM_Init(EWM_Type *base, const ewm_config_t *config)
- {
- assert(config);
- uint32_t value = 0U;
- #if !((defined(FSL_FEATURE_SOC_PCC_COUNT) && FSL_FEATURE_SOC_PCC_COUNT) && \
- (defined(FSL_FEATURE_PCC_SUPPORT_EWM_CLOCK_REMOVE) && FSL_FEATURE_PCC_SUPPORT_EWM_CLOCK_REMOVE))
- #if !(defined(FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) && FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL)
- CLOCK_EnableClock(kCLOCK_Ewm0);
- #endif
- #endif
- value = EWM_CTRL_EWMEN(config->enableEwm) | EWM_CTRL_ASSIN(config->setInputAssertLogic) |
- EWM_CTRL_INEN(config->enableEwmInput) | EWM_CTRL_INTEN(config->enableInterrupt);
- #if defined(FSL_FEATURE_EWM_HAS_PRESCALER) && FSL_FEATURE_EWM_HAS_PRESCALER
- base->CLKPRESCALER = config->prescaler;
- #endif
- #if defined(FSL_FEATURE_EWM_HAS_CLOCK_SELECT) && FSL_FEATURE_EWM_HAS_CLOCK_SELECT
- base->CLKCTRL = config->clockSource;
- #endif
- base->CMPL = config->compareLowValue;
- base->CMPH = config->compareHighValue;
- base->CTRL = value;
- }
- void EWM_Deinit(EWM_Type *base)
- {
- EWM_DisableInterrupts(base, kEWM_InterruptEnable);
- #if !((defined(FSL_FEATURE_SOC_PCC_COUNT) && FSL_FEATURE_SOC_PCC_COUNT) && \
- (defined(FSL_FEATURE_PCC_SUPPORT_EWM_CLOCK_REMOVE) && FSL_FEATURE_PCC_SUPPORT_EWM_CLOCK_REMOVE))
- #if !(defined(FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) && FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL)
- CLOCK_DisableClock(kCLOCK_Ewm0);
- #endif
- #endif
- }
- void EWM_GetDefaultConfig(ewm_config_t *config)
- {
- assert(config);
- config->enableEwm = true;
- config->enableEwmInput = false;
- config->setInputAssertLogic = false;
- config->enableInterrupt = false;
- #if defined(FSL_FEATURE_EWM_HAS_CLOCK_SELECT) && FSL_FEATURE_EWM_HAS_CLOCK_SELECT
- config->clockSource = kEWM_LpoClockSource0;
- #endif
- #if defined(FSL_FEATURE_EWM_HAS_PRESCALER) && FSL_FEATURE_EWM_HAS_PRESCALER
- config->prescaler = 0U;
- #endif
- config->compareLowValue = 0U;
- config->compareHighValue = 0xFEU;
- }
- void EWM_Refresh(EWM_Type *base)
- {
- uint32_t primaskValue = 0U;
-
- primaskValue = DisableGlobalIRQ();
- base->SERV = (uint8_t)0xB4U;
- base->SERV = (uint8_t)0x2CU;
- EnableGlobalIRQ(primaskValue);
- }
|