M480 BSP V3.05.005
The Board Support Package for M480 Series
qei.c
Go to the documentation of this file.
1/**************************************************************************/
9#include "NuMicro.h"
10
11
30void QEI_Close(QEI_T* qei)
31{
32 /* Reset QEI configuration */
33 qei->CTL = (uint32_t)0;
34}
35
47void QEI_DisableInt(QEI_T* qei, uint32_t u32IntSel)
48{
49 /* Disable QEI specified interrupt */
50 QEI_DISABLE_INT(qei, u32IntSel);
51
52 /* Disable NVIC QEI IRQ */
53 if(qei ==(QEI_T*)QEI0)
54 {
55 NVIC_DisableIRQ((IRQn_Type)QEI0_IRQn);
56 }
57 else
58 {
59 NVIC_DisableIRQ((IRQn_Type)QEI1_IRQn);
60 }
61}
62
74void QEI_EnableInt(QEI_T* qei, uint32_t u32IntSel)
75{
76 /* Enable QEI specified interrupt */
77 QEI_ENABLE_INT(qei, u32IntSel);
78
79 /* Enable NVIC QEI IRQ */
80 if(qei == (QEI_T*)QEI0)
81 {
82 NVIC_EnableIRQ(QEI0_IRQn);
83 }
84 else
85 {
86 NVIC_EnableIRQ(QEI1_IRQn);
87 }
88}
89
102void QEI_Open(QEI_T* qei, uint32_t u32Mode, uint32_t u32Value)
103{
104 /* Set QEI function configuration */
105 /* Set QEI counting mode */
106 /* Enable IDX, QEA and QEB input to QEI controller */
107 qei->CTL = (qei->CTL & (~QEI_CTL_MODE_Msk)) | ((u32Mode) | QEI_CTL_CHAEN_Msk | QEI_CTL_CHBEN_Msk | QEI_CTL_IDXEN_Msk);
108
109 /* Set QEI maximum count value in in compare-counting mode */
110 qei->CNTMAX = u32Value;
111}
112
119void QEI_Start(QEI_T* qei)
120{
121 /* Enable QEI controller function */
122 qei->CTL |= QEI_CTL_QEIEN_Msk;
123}
124
131void QEI_Stop(QEI_T* qei)
132{
133 /* Disable QEI controller function */
134 qei->CTL &= (~QEI_CTL_QEIEN_Msk);
135}
136
137 /* end of group QEI_EXPORTED_FUNCTIONS */
139 /* end of group QEI_Driver */
141 /* end of group Standard_Driver */
143
144/*** (C) COPYRIGHT 2016 Nuvoton Technology Corp. ***/
NuMicro peripheral access layer header file.
enum IRQn IRQn_Type
@ QEI1_IRQn
Definition: M480.h:161
@ QEI0_IRQn
Definition: M480.h:160
#define QEI0
Definition: M480.h:421
#define QEI_DISABLE_INT(qei, u32IntSel)
Disable QEI interrupt.
Definition: qei.h:176
void QEI_Open(QEI_T *qei, uint32_t u32Mode, uint32_t u32Value)
Open QEI in specified mode and enable input.
Definition: qei.c:102
void QEI_Start(QEI_T *qei)
Start QEI function.
Definition: qei.c:119
void QEI_Close(QEI_T *qei)
Close QEI function.
Definition: qei.c:30
#define QEI_ENABLE_INT(qei, u32IntSel)
Enable QEI interrupt.
Definition: qei.h:190
void QEI_EnableInt(QEI_T *qei, uint32_t u32IntSel)
Enable QEI interrupt.
Definition: qei.c:74
void QEI_DisableInt(QEI_T *qei, uint32_t u32IntSel)
Disable QEI interrupt.
Definition: qei.c:47
void QEI_Stop(QEI_T *qei)
Stop QEI function.
Definition: qei.c:131
#define QEI_CTL_IDXEN_Msk
Definition: qei_reg.h:451
#define QEI_CTL_CHBEN_Msk
Definition: qei_reg.h:448
#define QEI_CTL_QEIEN_Msk
Definition: qei_reg.h:502
#define QEI_CTL_CHAEN_Msk
Definition: qei_reg.h:445
Definition: qei_reg.h:27
__IO uint32_t CTL
Definition: qei_reg.h:410
__IO uint32_t CNTMAX
Definition: qei_reg.h:409