BLE5.2 1.0
开发文档说明
xc_drv_qdec.c
浏览该文件的文档.
1
25/*-----------------------------------------------------------------------------------
26 INCLUDE HEADE FILES
27 ------------------------------------------------------------------------------------*/
28#include "xc_drv_qdec.h"
29
30/*------------------------------------------------------------------------------------
31 Local Variables
32 -------------------------------------------------------------------------------------*/
33
34/*------------------------------------------------------------------------------------
35 Func Prototype
36 -------------------------------------------------------------------------------------*/
37
38/*------------------------------------------------------------------------------------
39 Functions
40 -------------------------------------------------------------------------------------*/
50{
53
54// DEBUG("0_CTLAPBCLKEN_GRCTL: %08x\n", cpr_ctlapbclken_grctl_get());
55 cpr_ctlapbclken_grctl__qdec_pclk_en__setf(ENABLE);
56// DEBUG("1_CTLAPBCLKEN_GRCTL: %08x\n", cpr_ctlapbclken_grctl_get());
57 cpr_rstctl_ctlapb_sw__qdec_rstn__setf(~ENABLE);
58 cpr_rstctl_ctlapb_sw__qdec_rstn__setf(~DISABLE);
59 DEBUG("0_QDEC_CLK_CTL: %08x\n", cpr_qdec_clk_ctl_get());
60 cpr_qdec_clk_ctl__qdec_clk_div__setf(0x07);
61 cpr_qdec_clk_ctl__qdec_clk_en__setf(ENABLE);
62 DEBUG("1_QDEC_CLK_CTL: %08x\n", cpr_qdec_clk_ctl_get());
63 if(ENABLE == init_cfg->auto_clr_en) {
64 qdec_ctl__auto_clr_en__setf(ENABLE);
65 } else {
66 qdec_ctl__auto_clr_en__setf(DISABLE);
67 }
68
69 if(ENABLE == init_cfg->single_sample_rst_en) {
70 qdec_ctl__single_sample_rst_en__setf(ENABLE);
71 } else {
72 qdec_ctl__single_sample_rst_en__setf(DISABLE);
73 }
74
75 if(ENABLE == init_cfg->db_filter_en) {
76 qdec_ctl__db_filter_en__setf(ENABLE);
77 } else {
78 qdec_ctl__db_filter_en__setf(DISABLE);
79 }
80 QDEC_CTL_REG = 0x40;
81 qdec_samp_ctl_pack(init_cfg->db_sample_div,
82 init_cfg->num_pts_sampled,
83 init_cfg->acc_sample_div);
84
85 qdec_int_msk_pack(ENABLE, ENABLE, ENABLE, DISABLE);
86}
87
97{
98 qdec_ctl__qdec_en__setf(ENABLE);
99}
100
110{
111 qdec_ctl__qdec_en__setf(DISABLE);
112}
113
123{
124 qdec_ctl__qdec_start__setf(ENABLE);
125}
126
135void xc_qdec_stop(void)
136{
137 qdec_ctl__qdec_start__setf(DISABLE);
138}
139
148void QDEC_Handler(void)
149{
150 uint8_t qdec_int_mask = qdec_int_msk_get( );
151 uint8_t qdec_int = qdec_int_get( );
152 uint8_t qdec_int_sta = (qdec_int & qdec_int_mask);
153 qdec_int_set(qdec_int);
154
155 if(SINGLE_SAMPLE_MSK_BIT == (qdec_int_sta & SINGLE_SAMPLE_MSK_BIT)) {
156 DEBUG("__SINGLE_SAMPLE_INT__\n");
157 }
158
159 if(SAMPLE_END_MSK_BIT == (qdec_int_sta & SAMPLE_END_MSK_BIT)) {
160 DEBUG("__SAMPLE_END_INT__\n");
161 DEBUG("Sample: %04x\n", (uint16_t)qdec_acc_get( ));
162 DEBUG("DB: %02x\n", (uint8_t)qdec_db_get( ));
163 }
164
165 if(ACC_OF_MSK_BIT == (qdec_int_sta & ACC_OF_MSK_BIT)) {
166 DEBUG("__ACC_INT__\n");
167 }
168
169 if(DB_OF_MSK_BIT == (qdec_int_sta & DB_OF_MSK_BIT)) {
170 DEBUG("__DB_INT__\n");
171 }
172}
eDBSampDiv db_sample_div
ePtsNum num_pts_sampled
uint8_t single_sample_rst_en
Definition xc_drv_qdec.h:99
uint8_t auto_clr_en
Definition xc_drv_qdec.h:98
eSampleDivide acc_sample_div
uint8_t db_filter_en
void xc_gpio_mux_ctl(uint8_t num, GPIO_MUX_TypeDef mux)
xc_gpio_init
@ GPIO_Mux2
Definition xc_drv_gpio.h:98
@ GPIO_20
Definition xc_drv_gpio.h:70
@ GPIO_21
Definition xc_drv_gpio.h:71
void xc_qdec_disable(void)
void xc_qdec_init(Qdec_InitCfg_t *init_cfg)
Definition xc_drv_qdec.c:49
void xc_qdec_start(void)
void QDEC_Handler(void)
void xc_qdec_enable(void)
Definition xc_drv_qdec.c:96
void xc_qdec_stop(void)
The header of xc_drv_qdec.c