tao_z
2022-06-01 0ff91e66071237834a1501c78648729c8c32f67a
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
/**
  ******************************************************************************
  * @file     xl_ewm.c
  * @author   kirk  ,xu.wang
  * @version  4.5.2
  * @date     Fri Mar 26 17:29:12 2021
  * @brief    This file provide function about EWM firmware program 
  ******************************************************************************
  * @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>
  ******************************************************************************
  */
#if defined(__cplusplus)
extern "C" {
#endif /* __cplusplus */
 
/* Includes ---------------------------------------------------------------*/
#include "xl_ewm.h"
/** @addtogroup XL6600_StdPeriph_Driver
  * @{
  */
 
/** @defgroup EWM EWM Module 
  * @brief EWM Driver Modules Library
  * @{
  */
    
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/    
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
    
    
/** @defgroup EWM_Private_Functions
  * @{
  */ 
    
/**
  * @brief  ³õʼ»¯EWM
  * @param  EWMx:ÉèÖÃEWMÍâÉè
  * @param  EWM_InitStruct:ÉèÖÃEWM³õʼ»¯²ÎÊý½á¹¹Ìå
  * @retval None
  */
void EWM_Init(EWM_Type* EWMx,const  EWM_InitTypeDef* EWM_InitStruct)
{
    uint8_t temp;
    
    EWMx->CMPH = EWM_InitStruct->EWM_CMPHValue;
    EWMx->CMPL = EWM_InitStruct->EWM_CMPLValue;
    EWMx->CLKDIV = EWM_InitStruct->EWM_Clock_Div;
    
    temp = (uint8_t)EWMx->CTRL;
    
    temp |= (uint8_t)((EWM_InitStruct->EWM_ClockSource << EWM_CTRL_CLK_SEL_SHIFT) | \
                     (EWM_InitStruct->EWM_ResetIntEnable << EWM_CTRL_INTREN_OUT_SHIFT) | \
                     (EWM_InitStruct->EWM_CMPLIntEnable << EWM_CTRL_INTREN_CMPL_SHIFT) | \
                     (EWM_InitStruct->EWM_InputEnable << EWM_CTRL_INEN_SHIFT) | \
                     (EWM_InitStruct->EWM_InputLevel << EWM_CTRL_ASSIN_SHIFT) | \
                     (EWM_InitStruct->EWM_Enable)); 
    EWMx->CTRL = (uint32_t)temp;
}
 
/**
  * @brief  EWMË¢ÐÂServer
  * @param  EWMx:ÉèÖÃEWMÍâÉè
  * @param  nCount£¬Ê±¼äÖÜÆÚ
  * @retval ÖжÏ״̬
  */
void EWM_UpdateServ(EWM_Type *EWMx)
{
    EWMx->SERV = 0xB4;
    EWMx->SERV = 0x2C;
}
/**
  * @brief  EWMµÃµ½ÖжÏ״̬
  * @param  EWMx:ÉèÖÃEWMÍâÉè
  * @param  EWM_InterruptStatusType:ÉèÖÃEWMÖжÏÀàÐÍ
  * @retval ÖжÏ״̬
  */
uint8_t EWM_GetInterruptStatus(const EWM_Type *EWMx)
{
    return (uint8_t) EWMx->INTR_STATE;
}
 
/**
  * @brief  EWMÇå³ýÖжϱêÖ¾
  * @param  EWMx:ÉèÖÃEWMÍâÉè
  * @param  EWM_InterruptStatusType:EWMÖжÏÀàÐÍ
 *     Õâ¸ö²ÎÊý¿ÉÒÔÈ¡ÏÂÃæµÄÖµ:
 *            @arg EWM_CMPL_INT_STATUS: CMPLÖжÏ״̬
 *            @arg EWM_RESET_INT_STATUS: ¸´Î»ÖжÏ״̬
 *            @arg EWM_LTCMPL_INT_STATUS: ¼ÆÊýÆ÷δµ½´ïCMPLÖжÏ״̬
 *            @arg EWM_GTCMPH_INT_STATUS: ¼ÆÊýÆ÷´ïµ½CMPHÖжÏ״̬
 *            @arg EWM_OUT15CLOCK_INT_STATUS: Ã»ÓÐÔÚ15¸öÖÜÆÚÄÚÍê³ÉË¢ÐÂÖжÏ״̬
 *            @arg EWM_EXTERNAL_INT_STATUS: ÍⲿÐźŷ¢Éú·­×ªÖжÏ״̬
 *            @arg EWM_CLEAR_ALL_INT: CMPLÖжÏ״̬
  * @retval None
  */
void EWM_ClearInterruptStatus(EWM_Type *EWMx,uint8_t EWM_InterruptStatusType)
{
    EWMx->INTR_STATE |= (uint32_t)EWM_InterruptStatusType;
}
 
/**
  * @}
  */
 
/**
  * @}
  */
 
/**
  * @}
  */
#ifdef __cplusplus
}
#endif /* __cplusplus */