/**
******************************************************************************
* @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.
*
*
© COPYRIGHT 2019 Chipways
******************************************************************************
*/
#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 */