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