SilentSensors / mbed-dev

Fork of mbed-dev by mbed official

Revision:
172:7d866c31b3c5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/TARGET_NUVOTON/TARGET_M480/device/StdDriver/m480_ecap.c	Thu Aug 31 17:27:04 2017 +0100
@@ -0,0 +1,111 @@
+/**************************************************************************//**
+ * @file     ecap.c
+ * @version  V3.00
+ * @brief    Enhanced Input Capture Timer (ECAP) driver source file
+ *
+ * @copyright (C) 2016 Nuvoton Technology Corp. All rights reserved.
+*****************************************************************************/
+#include "M480.h"
+
+
+/** @addtogroup M480_Device_Driver M480 Device Driver
+  @{
+*/
+
+/** @addtogroup ECAP_Driver ECAP Driver
+  @{
+*/
+
+/** @addtogroup ECAP_EXPORTED_FUNCTIONS ECAP Exported Functions
+  @{
+*/
+
+/**
+  * @brief      Enable ECAP function
+  * @param[in]  ecap        The pointer of the specified ECAP module.
+  * @param[in]  u32FuncMask Input capture function select
+  *                         - \ref ECAP_DISABLE_COMPARE
+  *                         - \ref ECAP_COMPARE_FUNCTION
+  * @return     None
+  * @details    This macro enable input capture function and select compare and reload function.
+  */
+void ECAP_Open(ECAP_T* ecap, uint32_t u32FuncMask)
+{
+    /* Clear Input capture mode*/
+    ecap->CTL0 = ecap->CTL0 & ~(ECAP_CTL0_CMPEN_Msk);
+
+    /* Enable Input Capture and set mode */
+    ecap->CTL0 |= ECAP_CTL0_CAPEN_Msk | (u32FuncMask);
+}
+
+
+
+/**
+  * @brief      Disable ECAP function
+  * @param[in]  ecap        The pointer of the specified ECAP module.
+  * @return     None
+  * @details    This macro disable input capture function.
+  */
+void ECAP_Close(ECAP_T* ecap)
+{
+    /* Disable Input Capture*/
+    ecap->CTL0 &= ~ECAP_CTL0_CAPEN_Msk;
+}
+
+/**
+  * @brief This macro is used to enable input channel interrupt
+  * @param[in] ecap      Specify ECAP port
+  * @param[in] u32Mask  The input channel Mask
+  *                  - \ref ECAP_CTL0_CAPIEN0_Msk
+  *                  - \ref ECAP_CTL0_CAPIEN1_Msk
+  *                  - \ref ECAP_CTL0_CAPIEN2_Msk
+  *                  - \ref ECAP_CTL0_OVIEN_Msk
+  *                  - \ref ECAP_CTL0_CMPIEN_Msk
+  * @return None
+  * @details This macro will enable the input channel_n interrupt.
+  */
+void ECAP_EnableINT(ECAP_T* ecap, uint32_t u32Mask)
+{
+    /* Enable input channel interrupt */
+    ecap->CTL0 |= (u32Mask);
+
+    /* Enable NVIC ECAP IRQ */
+    if(ecap == (ECAP_T*)ECAP0) {
+        NVIC_EnableIRQ((IRQn_Type)ECAP0_IRQn);
+    } else {
+        NVIC_EnableIRQ((IRQn_Type)ECAP1_IRQn);
+    }
+}
+
+/**
+  * @brief This macro is used to disable input channel interrupt
+  * @param[in] ecap      Specify ECAP port
+  * @param[in] u32Mask  The input channel number
+  *                  - \ref ECAP_CTL0_CAPIEN0_Msk
+  *                  - \ref ECAP_CTL0_CAPIEN1_Msk
+  *                  - \ref ECAP_CTL0_CAPIEN2_Msk
+  *                  - \ref ECAP_CTL0_OVIEN_Msk
+  *                  - \ref ECAP_CTL0_CMPIEN_Msk
+  * @return None
+  * @details This macro will disable the input channel_n interrupt.
+  */
+void ECAP_DisableINT(ECAP_T* ecap, uint32_t u32Mask)
+{
+    /* Disable input channel interrupt */
+    ecap->CTL0 &= ~(u32Mask);
+
+    /* Disable NVIC ECAP IRQ */
+    if(ecap == (ECAP_T*)ECAP0) {
+        NVIC_DisableIRQ((IRQn_Type)ECAP0_IRQn);
+    } else {
+        NVIC_DisableIRQ((IRQn_Type)ECAP1_IRQn);
+    }
+}
+
+/*@}*/ /* end of group ECAP_EXPORTED_FUNCTIONS */
+
+/*@}*/ /* end of group ECAP_Driver */
+
+/*@}*/ /* end of group Standard_Driver */
+
+/*** (C) COPYRIGHT 2016 Nuvoton Technology Corp. ***/