tao_z
2022-05-25 1044ba0d2286698d0da28112bffc0f114bef2134
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
/**
  ******************************************************************************
  * @file     xl_ewm.h
  * @author   software group
  * @brief    This file contains all the functions prototypes for the EWM
  *           firmware library.
  ******************************************************************************
  * @attention
    *
  * 2019 by Chipways Communications,Inc. All Rights Reserved.
  * This software is supplied under the terms of a license
  * agreement or non-disclosure agreement with Chipways.
  * Passing on and copying of this document,and communication
  * of its contents is not permitted without prior written
  * authorization.
  *
  * <h2><center>&copy; COPYRIGHT 2019 Chipways</center></h2>
  ******************************************************************************
  */
/* Define to prevent recursive inclusion -------------------------------------*/    
#ifndef XL_EWM_H_
#define XL_EWM_H_
 
#ifdef __cplusplus
extern "C" {
#endif
 
/* Includes ---------------------------------------------------------------*/    
#include "XL6600.h"
    
/* Register define ------------------------------------------------------------*/
#define EWM_CTRL_CLK_SEL_MASK                               0x60u
#define EWM_CTRL_CLK_SEL_SHIFT                              5
#define EWM_CTRL_INTREN_OUT_MASK                               0x10u
#define EWM_CTRL_INTREN_OUT_SHIFT                              4
#define EWM_CTRL_INTREN_CMPL_MASK                           0x08u
#define EWM_CTRL_INTREN_CMPL_SHIFT                          3
#define EWM_CTRL_INEN_MASK                                   0x04u
#define EWM_CTRL_INEN_SHIFT                                  2
#define EWM_CTRL_ASSIN_MASK                                   0x02u
#define EWM_CTRL_ASSIN_SHIFT                                  1
#define EWM_CTRL_ENABLE_MASK                                   0x01u
#define EWM_CTRL_ENABLE_SHIFT                                  0
    
#define EWM_SERV_SERV_MASK                                   0xFFu
#define EWM_SERV_SERV_SHIFT                                  0
    
#define EWM_CMPL_CMPL_MASK                                   0xFFFFu
#define EWM_CMPL_CMPL_SHIFT                                  0
 
#define EWM_CMPH_CMPH_MASK                                   0xFFFFu
#define EWM_CMPH_CMPH_SHIFT                                  0
 
#define EWM_CLKDIV_CLK_DIV_MASK                               0xFFFFu
#define EWM_CLKDIV_CLK_DIV_SHIFT                              0
 
#define EWM_INTR_STATE_RESET_MASK                           0x02u
#define EWM_INTR_STATE_RESET_SHIFT                          1
#define EWM_INTR_STATE_INT_MASK                               0x01u
#define EWM_INTR_STATE_INT_SHIFT                              0
 
/** EWM - Register Layout Typedef */
typedef struct {
    __IO uint32_t        CTRL;                                         /*!< ¿ØÖƼĴæÆ÷, offset:0x00*/
    __IO uint32_t        SERV;                                      /*!< Ë¢Ð¼ĴæÆ÷, offset:0x04*/
    __IO uint32_t        CMPL;                                      /*!< ´°¿ÚÉèÖÃÏÂÏ޼ĴæÆ÷, offset:0x08*/
    __IO uint32_t        CMPH;                                      /*!< ´°¿ÚÉèÖÃÉÏÏ޼ĴæÆ÷, offset:0x0C*/
    __IO uint32_t        CLKDIV;                                       /*!< ¼ÆÊýʱÖÓ·ÖÆµ¼Ä´æÆ÷, offset:0x0C*/
    __IO uint32_t        INTR_STATE;                                    /*!< ÖжÏ״̬¼Ä´æÆ÷, offset:0x0C*/
} EWM_Type;
extern EWM_Type*     EWM;
 
/** @addtogroup XL6600_StdPeriph_Driver
  * @{
  */
 
/** @addtogroup EWM 
  * @{
  */
 
 
/* Exported types ------------------------------------------------------------*/ 
 
/**
 * @brief EWM ³õʼ»¯½á¹¹Ì嶨Òå
 */
 
typedef struct
{    
    uint8_t     EWM_ClockSource;                  /*!< EWMʱÖÓÔ´ */
    uint8_t     EWM_ResetIntEnable;             /*!< EWMÍⲿ¸´Î»ÖжÏʹÄÜ */
    uint8_t     EWM_CMPLIntEnable;              /*!< CMPLÖжÏʹÄÜ */
    uint8_t     EWM_InputEnable;                /*!< EWMÊäÈ빦ÄÜʹÄÜ */
    uint8_t     EWM_InputLevel;                 /*!< EWMÊäÈëµçƽ */
    uint8_t     EWM_Enable;                     /*!< EWMÄ£¿éʹÄÜ */
    uint16_t     EWM_CMPHValue;                    /*!< EWM´°¿ÚÉèÖÃÉÏÏ޼ĴæÆ÷Öµ */
    uint16_t     EWM_CMPLValue;                    /*!< EWM´°¿ÚÉèÖÃÏÂÏ޼ĴæÆ÷Öµ */ 
    uint16_t     EWM_Clock_Div;                    /*!< EWMʱÖÓ·ÖÆµÏµÊý */
}EWM_InitTypeDef;
 
/* Exported constants --------------------------------------------------------*/
/** @defgroup EWM_Exported_Constants EWMÄ£¿éʹÓòÎÊý¶¨Òå
  * @{
  */
 
/**
    * @defgroup EWM_Clock_Source   EWMʱÖÓÔ´¶¨Òå
    * @{
    */                                                                                  
#define EWM_CLK_SEL_PCLK                              ((uint8_t)0x0)            /*!< APBCLK */    
#define EWM_CLK_SEL_LPO_CLK                          ((uint8_t)0x1)            /*!< µÍ¹¦ºÄʱÖÓLPO */    
#define EWM_CLK_SEL_OSC_CLK                          ((uint8_t)0x2)              /*!< ÍⲿÕñµ´Æ÷OSC */
#define EWM_CLK_SEL_ICS_IRCLK                          ((uint8_t)0x3)          /*!< ÄÚ²¿»ù׼ʱÖÓIRC */
 
/**
    * @defgroup EWM_Input_Level   EWMÊäÈëµçƽѡÔñ
    * @{
    */
#define EWM_IN_LEVE_H       0x01                     /*!< EWMÊäÈëµçƽΪ¸ß */                  
#define EWM_IN_LEVE_L       0x00                     /*!< EWMÊäÈëµçƽΪµÍ */
 
/**
    * @defgroup EWM_Interrupt_Status   EWMÖжÏ״̬
    * @{
    */
#define EWM_CMPL_INT_STATUS                                      0x01                 /*!< CMPLÖжÏ״̬ */
#define EWM_RESET_INT_STATUS                                      0x02               /*!< ¸´Î»ÖжÏ״̬ */
#define EWM_LTCMPL_INT_STATUS                                      0x04               /*!< ¼ÆÊýÆ÷δµ½´ïCMPLÖжÏ״̬ */
#define EWM_GTCMPH_INT_STATUS                                      0x08               /*!< ¼ÆÊýÆ÷µ½´ïCMPHÖжÏ״̬ */
#define EWM_OUT15CLOCK_INT_STATUS                                  0x10             /*!< Ã»ÓÐÔÚ15¸öÖÜÆÚÄÚÍê³ÉË¢ÐÂÖжÏ״̬ */
#define EWM_EXTERNAL_INT_STATUS                                  0x20               /*!< ÍⲿÐźŷ¢Éú·­×ªÖжÏ״̬ */
#define EWM_CLEAR_ALL_INT                                        0x3F                     /*!< Çå³ýËùÓÐÖжϠ*/
 
 
/**
  * @}
  */
                                                                                        
/**
  * @}
  */
 
/* Exported macro ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/ 
void EWM_Init(EWM_Type *EWMx,const EWM_InitTypeDef *EWM_InitStruct);
void EWM_UpdateServ(EWM_Type *EWMx);
uint8_t EWM_GetInterruptStatus(const EWM_Type *EWMx);
void EWM_ClearInterruptStatus(EWM_Type *EWMx,uint8_t EWM_InterruptStatusType);
 
 
#ifdef __cplusplus
}
#endif
    
#endif 
/**
  * @}
  */
 
/**
  * @}
  */