]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS/Demo/CORTEX_MPU_M23_Nuvoton_NuMaker_PFM_M2351_IAR_GCC/Nuvoton_Code/StdDriver/src/ecap.c
Add Cortex M23 GCC and IAR ports. Add demo projects for Nuvoton NuMaker-PFM-2351.
[freertos] / FreeRTOS / Demo / CORTEX_MPU_M23_Nuvoton_NuMaker_PFM_M2351_IAR_GCC / Nuvoton_Code / StdDriver / src / ecap.c
diff --git a/FreeRTOS/Demo/CORTEX_MPU_M23_Nuvoton_NuMaker_PFM_M2351_IAR_GCC/Nuvoton_Code/StdDriver/src/ecap.c b/FreeRTOS/Demo/CORTEX_MPU_M23_Nuvoton_NuMaker_PFM_M2351_IAR_GCC/Nuvoton_Code/StdDriver/src/ecap.c
new file mode 100644 (file)
index 0000000..304d057
--- /dev/null
@@ -0,0 +1,121 @@
+/**************************************************************************//**\r
+ * @file     ecap.c\r
+ * @version  V3.00\r
+\r
+ * @brief    Enhanced Input Capture Timer (ECAP) driver source file\r
+ *\r
+ * @note\r
+ * Copyright (C) 2017 Nuvoton Technology Corp. All rights reserved.\r
+*****************************************************************************/\r
+#include "M2351.h"\r
+\r
+\r
+\r
+/** @addtogroup Standard_Driver Standard Driver\r
+  @{\r
+*/\r
+\r
+/** @addtogroup ECAP_Driver ECAP Driver\r
+  @{\r
+*/\r
+\r
+/** @addtogroup ECAP_EXPORTED_FUNCTIONS ECAP Exported Functions\r
+  @{\r
+*/\r
+\r
+/**\r
+  * @brief      Enable ECAP function\r
+  * @param[in]  ecap        The pointer of the specified ECAP module.\r
+  * @param[in]  u32FuncMask Input capture function select\r
+  *                         - \ref ECAP_DISABLE_COMPARE\r
+  *                         - \ref ECAP_COMPARE_FUNCTION\r
+  * @return     None\r
+  * @details    This macro enable input capture function and select compare and reload function.\r
+  */\r
+void ECAP_Open(ECAP_T* ecap, uint32_t u32FuncMask)\r
+{\r
+    /* Clear Input capture mode*/\r
+    ecap->CTL0 = ecap->CTL0 & ~(ECAP_CTL0_CMPEN_Msk);\r
+\r
+    /* Enable Input Capture and set mode */\r
+    ecap->CTL0 |= ECAP_CTL0_CAPEN_Msk | (u32FuncMask);\r
+}\r
+\r
+\r
+\r
+/**\r
+  * @brief      Disable ECAP function\r
+  * @param[in]  ecap        The pointer of the specified ECAP module.\r
+  * @return     None\r
+  * @details    This macro disable input capture function.\r
+  */\r
+void ECAP_Close(ECAP_T* ecap)\r
+{\r
+    /* Disable Input Capture*/\r
+    ecap->CTL0 &= ~ECAP_CTL0_CAPEN_Msk;\r
+}\r
+\r
+/**\r
+  * @brief This macro is used to enable input channel interrupt\r
+  * @param[in] ecap      Specify ECAP port\r
+  * @param[in] u32Mask  The input channel Mask\r
+  *                  - \ref ECAP_CTL0_CAPIEN0_Msk\r
+  *                  - \ref ECAP_CTL0_CAPIEN1_Msk\r
+  *                  - \ref ECAP_CTL0_CAPIEN2_Msk\r
+  *                  - \ref ECAP_CTL0_OVIEN_Msk\r
+  *                  - \ref ECAP_CTL0_CMPIEN_Msk\r
+  * @return None\r
+  * @details This macro will enable the input channel_n interrupt.\r
+  */\r
+void ECAP_EnableINT(ECAP_T* ecap, uint32_t u32Mask)\r
+{\r
+    /* Enable input channel interrupt */\r
+    ecap->CTL0 |= (u32Mask);\r
+\r
+    /* Enable NVIC ECAP IRQ */\r
+    if((ecap == ECAP0) || (ecap == ECAP0_NS))\r
+    {\r
+        NVIC_EnableIRQ(ECAP0_IRQn);\r
+    }\r
+    else\r
+    {\r
+        NVIC_EnableIRQ(ECAP1_IRQn);\r
+    }\r
+}\r
+\r
+/**\r
+  * @brief This macro is used to disable input channel interrupt\r
+  * @param[in] ecap      Specify ECAP port\r
+  * @param[in] u32Mask  The input channel number\r
+  *                  - \ref ECAP_CTL0_CAPIEN0_Msk\r
+  *                  - \ref ECAP_CTL0_CAPIEN1_Msk\r
+  *                  - \ref ECAP_CTL0_CAPIEN2_Msk\r
+  *                  - \ref ECAP_CTL0_OVIEN_Msk\r
+  *                  - \ref ECAP_CTL0_CMPIEN_Msk\r
+  * @return None\r
+  * @details This macro will disable the input channel_n interrupt.\r
+  */\r
+void ECAP_DisableINT(ECAP_T* ecap, uint32_t u32Mask)\r
+{\r
+    /* Disable input channel interrupt */\r
+    (ecap->CTL0) &= ~(u32Mask);\r
+\r
+    /* Disable NVIC ECAP IRQ */\r
+    if((ecap == ECAP0) || (ecap == ECAP0_NS))\r
+    {\r
+        NVIC_DisableIRQ(ECAP0_IRQn);\r
+    }\r
+    else\r
+    {\r
+        NVIC_DisableIRQ(ECAP1_IRQn);\r
+    }\r
+}\r
+\r
+/*@}*/ /* end of group ECAP_EXPORTED_FUNCTIONS */\r
+\r
+/*@}*/ /* end of group ECAP_Driver */\r
+\r
+/*@}*/ /* end of group Standard_Driver */\r
+\r
+\r
+/*** (C) COPYRIGHT 2017 Nuvoton Technology Corp. ***/\r