void CMP_Init(CMP_Type *base, const cmp_config_t *config) { assert(NULL != config); uint8_t tmp8; #if !(defined(FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) && FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) /* Enable the clock. */ CLOCK_EnableClock(s_cmpClocks[CMP_GetInstance(base)]); #endif /* FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL */ /* Configure. */ CMP_Enable(base, false); /* Disable the CMP module during configuring. */ /* CMPx_CR1. */ tmp8 = base->CR1 & ~(CMP_CR1_PMODE_MASK | CMP_CR1_INV_MASK | CMP_CR1_COS_MASK | CMP_CR1_OPE_MASK); if (config->enableHighSpeed) { tmp8 |= CMP_CR1_PMODE_MASK; } if (config->enableInvertOutput) { tmp8 |= CMP_CR1_INV_MASK; } if (config->useUnfilteredOutput) { tmp8 |= CMP_CR1_COS_MASK; } if (config->enablePinOut) { tmp8 |= CMP_CR1_OPE_MASK; } #if defined(FSL_FEATURE_CMP_HAS_TRIGGER_MODE) && FSL_FEATURE_CMP_HAS_TRIGGER_MODE if (config->enableTriggerMode) { tmp8 |= CMP_CR1_TRIGM_MASK; } else { tmp8 &= ~CMP_CR1_TRIGM_MASK; } #endif /* FSL_FEATURE_CMP_HAS_TRIGGER_MODE */ base->CR1 = tmp8; /* CMPx_CR0. */ tmp8 = base->CR0 & ~CMP_CR0_HYSTCTR_MASK; tmp8 |= CMP_CR0_HYSTCTR(config->hysteresisMode); base->CR0 = tmp8; CMP_Enable(base, config->enableCmp); /* Enable the CMP module after configured or not. */ }
/** * @brief Main program. * @param None * @retval None */ int main(void) { CMP_InitPara CMP_InitParaStruct; /* Configurate RCC */ RCC_Configuration(); /* Configurate GPIOA*/ GPIO_Configuration(); GD_EVAL_LEDInit(LED3); /* Initialize CMP1 */ CMP_ParaInit(&CMP_InitParaStruct); CMP_InitParaStruct.CMP_InvertingInput = CMP_INVERTINGINPUT_1_4VREFINT; CMP_InitParaStruct.CMP_Output = CMP_OUTPUT_TIM2IC4; CMP_InitParaStruct.CMP_OutputPolarity = CMP_OUTPUTPOLARITY_NONINVERTED; CMP_InitParaStruct.CMP_Hysteresis = CMP_HYSTERESIS_NO; CMP_InitParaStruct.CMP_OperatingMode = CMP_OPERATINGMODE_VERYLOWSPEED; CMP_Init(CMP_CHANNEL_CMP1, &CMP_InitParaStruct); /* Configurate Timer2 and Interrupt */ TIMER_Configuration(); /* Enable CMP1 and Trigger Timer2 input capture */ CMP_Enable(CMP_CHANNEL_CMP1, ENABLE); while(1); }
void CMP_Deinit(CMP_Type *base) { /* Disable the CMP module. */ CMP_Enable(base, false); /* Disable the clock. */ CLOCK_DisableClock(s_cmpClocks[CMP_GetInstance(base)]); }
void CMP_Deinit(CMP_Type *base) { /* Disable the CMP module. */ CMP_Enable(base, false); #if !(defined(FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) && FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) /* Disable the clock. */ CLOCK_DisableClock(s_cmpClocks[CMP_GetInstance(base)]); #endif /* FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL */ }
/** * @brief Main program. * @param None * @retval None */ int main(void) { CMP_InitPara CMP_InitParaStruct; /* Enable Clock */ RCC_Configuration(); /* Enable GPIOA analog and alternate output */ GPIO_Configuration(); /* Configure CMP1 */ CMP_ParaInit(&CMP_InitParaStruct); CMP_InitParaStruct.CMP_InvertingInput = CMP_INVERTINGINPUT_1_4VREFINT; CMP_InitParaStruct.CMP_Output = CMP_OUTPUT_NONE; CMP_InitParaStruct.CMP_OutputPolarity = CMP_OUTPUTPOLARITY_NONINVERTED; CMP_InitParaStruct.CMP_Hysteresis = CMP_HYSTERESIS_NO; CMP_InitParaStruct.CMP_OperatingMode = CMP_OPERATINGMODE_VERYLOWSPEED; CMP_Init(CMP_CHANNEL_CMP1, &CMP_InitParaStruct); /* Enable CMP1 */ CMP_Enable(CMP_CHANNEL_CMP1, ENABLE); while(1); }
/** * @brief Main program. * @param None * @retval None */ int main(void) { CMP_InitPara CMP_InitParaStruct; EXTI_InitPara EXTI_InitStruct; NVIC_InitPara NVIC_InitStruct; GD_EVAL_LEDInit(LED2); /* configure RCC */ RCC_Configuration(); /* configure GPIO */ GPIO_Configuration(); /* Initial CMP */ CMP_ParaInit(&CMP_InitParaStruct); CMP_InitParaStruct.CMP_InvertingInput = CMP_INVERTINGINPUT_1_4VREFINT; CMP_InitParaStruct.CMP_Output = CMP_OUTPUT_NONE; CMP_InitParaStruct.CMP_OutputPolarity = CMP_OUTPUTPOLARITY_NONINVERTED; CMP_InitParaStruct.CMP_Hysteresis = CMP_HYSTERESIS_NO; CMP_InitParaStruct.CMP_OperatingMode = CMP_OPERATINGMODE_VERYLOWSPEED; CMP_Init(CMP_CHANNEL_CMP1, &CMP_InitParaStruct); /* NVIC CMP1 output intertupt handle */ NVIC_InitStruct.NVIC_IRQ = ADC1_CMP_IRQn; NVIC_InitStruct.NVIC_IRQPreemptPriority = 0; NVIC_InitStruct. NVIC_IRQSubPriority = 0; NVIC_InitStruct.NVIC_IRQEnable = ENABLE; NVIC_Init(&NVIC_InitStruct); /* EXTI trigger source CMP1 output configuration */ EXTI_InitStruct.EXTI_LINE = EXTI_LINE21 ; EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStruct.EXTI_LINEEnable = ENABLE; EXTI_Init(&EXTI_InitStruct); /* Enable CMP1 and enter interrupt */ CMP_Enable(CMP_CHANNEL_CMP1, ENABLE); while(1); }
/** * @brief Main program. * @param None * @retval None */ int main(void) { CMP_InitPara CMP_InitParaStruct; RCC_Configuration(); GPIO_Configuration(); DAC_Configuration(); /* Set data for DAC channel1 */ DAC_SetDAC1Data(DAC_ALIGN_12B_R ,0xA00); DAC_SoftwareTrigger_Enable(DAC1,ENABLE); /* initialize CMP1 */ CMP_ParaInit(&CMP_InitParaStruct); CMP_InitParaStruct.CMP_InvertingInput = CMP_INVERTINGINPUT_1_2VREFINT; CMP_InitParaStruct.CMP_Output = CMP_OUTPUT_NONE; CMP_InitParaStruct.CMP_OutputPolarity = CMP_OUTPUTPOLARITY_NONINVERTED; CMP_InitParaStruct.CMP_Hysteresis = CMP_HYSTERESIS_NO; CMP_InitParaStruct.CMP_OperatingMode = CMP_OPERATINGMODE_VERYLOWSPEED; CMP_Init(CMP_CHANNEL_CMP1, &CMP_InitParaStruct); /* Turn on switch between CMP1 and DAC */ CMP_Switch_Enable(ENABLE); /* Enable CMP1 */ CMP_Enable(CMP_CHANNEL_CMP1, ENABLE); while(1); }