1 /**************************************************************************//** 2 * @file ecap.c 3 * @version V3.00 4 * @brief Enhanced Input Capture Timer (ECAP) driver source file 5 * 6 * SPDX-License-Identifier: Apache-2.0 7 * @copyright (C) 2016-2020 Nuvoton Technology Corp. All rights reserved. 8 *****************************************************************************/ 9 #include "NuMicro.h" 10 11 12 /** @addtogroup Standard_Driver Standard Driver 13 @{ 14 */ 15 16 /** @addtogroup ECAP_Driver ECAP Driver 17 @{ 18 */ 19 20 /** @addtogroup ECAP_EXPORTED_FUNCTIONS ECAP Exported Functions 21 @{ 22 */ 23 24 /** 25 * @brief Enable ECAP function 26 * @param[in] ecap The pointer of the specified ECAP module. 27 * @param[in] u32FuncMask Input capture function select 28 * - \ref ECAP_DISABLE_COMPARE 29 * - \ref ECAP_COMPARE_FUNCTION 30 * @return None 31 * @details This macro enable input capture function and select compare and reload function. 32 */ ECAP_Open(ECAP_T * ecap,uint32_t u32FuncMask)33void ECAP_Open(ECAP_T* ecap, uint32_t u32FuncMask) 34 { 35 /* Clear Input capture mode*/ 36 ecap->CTL0 = ecap->CTL0 & ~(ECAP_CTL0_CMPEN_Msk); 37 38 /* Enable Input Capture and set mode */ 39 ecap->CTL0 |= ECAP_CTL0_CAPEN_Msk | (u32FuncMask); 40 } 41 42 43 44 /** 45 * @brief Disable ECAP function 46 * @param[in] ecap The pointer of the specified ECAP module. 47 * @return None 48 * @details This macro disable input capture function. 49 */ ECAP_Close(ECAP_T * ecap)50void ECAP_Close(ECAP_T* ecap) 51 { 52 /* Disable Input Capture*/ 53 ecap->CTL0 &= ~ECAP_CTL0_CAPEN_Msk; 54 } 55 56 /** 57 * @brief This macro is used to enable input channel interrupt 58 * @param[in] ecap Specify ECAP port 59 * @param[in] u32Mask The input channel Mask 60 * - \ref ECAP_CTL0_CAPIEN0_Msk 61 * - \ref ECAP_CTL0_CAPIEN1_Msk 62 * - \ref ECAP_CTL0_CAPIEN2_Msk 63 * - \ref ECAP_CTL0_OVIEN_Msk 64 * - \ref ECAP_CTL0_CMPIEN_Msk 65 * @return None 66 * @details This macro will enable the input channel_n interrupt. 67 */ ECAP_EnableINT(ECAP_T * ecap,uint32_t u32Mask)68void ECAP_EnableINT(ECAP_T* ecap, uint32_t u32Mask) 69 { 70 /* Enable input channel interrupt */ 71 ecap->CTL0 |= (u32Mask); 72 73 /* Enable NVIC ECAP IRQ */ 74 if(ecap == (ECAP_T*)ECAP0) 75 { 76 NVIC_EnableIRQ((IRQn_Type)ECAP0_IRQn); 77 } 78 else 79 { 80 NVIC_EnableIRQ((IRQn_Type)ECAP1_IRQn); 81 } 82 } 83 84 /** 85 * @brief This macro is used to disable input channel interrupt 86 * @param[in] ecap Specify ECAP port 87 * @param[in] u32Mask The input channel number 88 * - \ref ECAP_CTL0_CAPIEN0_Msk 89 * - \ref ECAP_CTL0_CAPIEN1_Msk 90 * - \ref ECAP_CTL0_CAPIEN2_Msk 91 * - \ref ECAP_CTL0_OVIEN_Msk 92 * - \ref ECAP_CTL0_CMPIEN_Msk 93 * @return None 94 * @details This macro will disable the input channel_n interrupt. 95 */ ECAP_DisableINT(ECAP_T * ecap,uint32_t u32Mask)96void ECAP_DisableINT(ECAP_T* ecap, uint32_t u32Mask) 97 { 98 /* Disable input channel interrupt */ 99 ecap->CTL0 &= ~(u32Mask); 100 101 /* Disable NVIC ECAP IRQ */ 102 if(ecap == (ECAP_T*)ECAP0) 103 { 104 NVIC_DisableIRQ((IRQn_Type)ECAP0_IRQn); 105 } 106 else 107 { 108 NVIC_DisableIRQ((IRQn_Type)ECAP1_IRQn); 109 } 110 } 111 112 /*@}*/ /* end of group ECAP_EXPORTED_FUNCTIONS */ 113 114 /*@}*/ /* end of group ECAP_Driver */ 115 116 /*@}*/ /* end of group Standard_Driver */ 117 118 /*** (C) COPYRIGHT 2016 Nuvoton Technology Corp. ***/ 119