/**
|
******************************************************************************
|
* @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>© 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
|
/**
|
* @}
|
*/
|
|
/**
|
* @}
|
*/
|