/**
|
******************************************************************************
|
* @file xl_pit.h
|
* @author software group
|
* @brief This file contains all the functions prototypes for the PIT
|
* 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_PIT_H_
|
#define __XL_PIT_H_
|
|
#ifdef __cplusplus
|
extern "C"{
|
#endif
|
|
/* Includes ---------------------------------------------------------------*/
|
#include "XL6600.h"
|
/* Register define ------------------------------------------------------------*/
|
|
/* LC Bit Fields */
|
#define PIT_LC_LC_MASK 0xFFFFFFFFu
|
#define PIT_LC_LC_SHIFT 0
|
|
/* CV Bit Fields */
|
#define PIT_CV_CV_MASK 0xFFFFFFFFu
|
#define PIT_CV_CV_SHIFT 0
|
|
/* CTR Bit Fields */
|
#define PIT_CTR_EN_MASK 0x1u
|
#define PIT_CTR_EN_SHIFT 0
|
#define PIT_CTR_MODE_MASK 0x2u
|
#define PIT_CTR_MODE_SHIFT 1
|
#define PIT_CTR_IM_MASK 0x4u
|
#define PIT_CTR_IM_SHIFT 2
|
|
/* EOI Bit Fields */
|
#define PIT_EOI_EOI_MASK 0x1u
|
#define PIT_EOI_EOI_SHIFT 0
|
|
/* IS Bit Fields */
|
#define PIT_IS_IS_MASK 0x1u
|
#define PIT_IS_IS_SHIFT 0
|
|
/* AIS Bit Fields */
|
#define PIT_AIS_AIS_MASK 0x3u
|
#define PIT_AIS_AIS_SHIFT 0
|
|
/* AEOI Bit Fields */
|
#define PIT_AEOI_AEOI_MASK 0x3u
|
#define PIT_AEOI_AEOI_SHIFT 0
|
|
/* RAWIS Bit Fields */
|
#define PIT_RAWIS_RAWIS_MASK 0x3u
|
#define PIT_RAWIS_RAWIS_SHIFT 0
|
|
/* DEBUG Bit Fields */
|
#define PIT_DEBUG_FRZ_MASK 0x10u
|
#define PIT_DEBUG_FRZ_SHIFT 4
|
|
/** PIT - Register Layout Typedef */
|
typedef struct{
|
struct{
|
__IO uint32_t LC; /*!< ¶¨Ê±Æ÷¼ÓÔØÖµ¼Ä´æÆ÷, offset: 0x00 */
|
__O uint32_t CV; /*!< ¶¨Ê±Æ÷µ±Ç°Öµ¼Ä´æÆ÷, offset: 0x04 */
|
__IO uint32_t CTR; /*!< ¶¨Ê±Æ÷¿ØÖƼĴæÆ÷, offset: 0x08 */
|
__O uint32_t EOI; /*!< ¶¨Ê±Æ÷ÖжÏÇåÁã¼Ä´æÆ÷, offset: 0x0C */
|
__O uint32_t IS; /*!< PIT Interrupt Status Register, offset: 0x10 */
|
}CHANNEL[2];
|
uint32_t RESERVED_0[30];
|
__O uint32_t AIS; /*!< ¶¨Ê±Æ÷ËùÓÐÖжÏ״̬¼Ä´æÆ÷, offset: 0xa0 */
|
__O uint32_t AEOI; /*!< ¶¨Ê±Æ÷ÇåÁãËùÓÐÖжϼĴæÆ÷, offset: 0xa4 */
|
__O uint32_t RAWIS; /*!< ¶¨Ê±Æ÷ÔʼÖжÏ״̬¼Ä´æÆ÷, offset: 0xa8 */
|
uint32_t RESERVED_1[9];
|
__IO uint32_t PIT_DIV[2];
|
uint32_t RESERVED_2[10];
|
__IO uint32_t CHAIN; /*!< ¶¨Ê±Æ÷µ÷ÊÔģʽÉèÖüĴæÆ÷, offset: 0x100 */
|
}PIT_Type,*PIT_MemMapPtr;
|
extern PIT_Type* PIT;
|
|
|
/** @addtogroup XL6600_StdPeriph_Driver
|
* @{
|
*/
|
|
/** @addtogroup PIT
|
* @{
|
*/
|
|
/* Exported constants --------------------------------------------------------*/
|
/** @defgroup ACMP_Exported_Constants ACMPÄ£¿éʹÓòÎÊý¶¨Òå
|
* @{
|
*/
|
|
/** @defgroup PIT_Mode_Seclect PITģʽѡÔñ¶¨Òå
|
* @{
|
*/
|
#define PIT_Run_Mode ((uint8_t)0x00) /*!< ×ÔÓÉÔËÐÐģʽ */
|
#define PIT_Count_Mode ((uint8_t)0x02) /*!< Óû§¶¨ÒåµÄ¼ÆÊýģʽ */
|
/**
|
* @}
|
*/
|
|
/** @defgroup PIT_Channels_Seclect PITͨµÀÑ¡Ôñ
|
* @{
|
*/
|
typedef enum
|
{
|
PIT_Channel0 = 0 , /*!< PITͨµÀ0 */
|
PIT_Channel1 /*!< PITͨµÀ1 */
|
|
}PIT_Channel;
|
/**
|
* @}
|
*/
|
|
|
/**
|
* @}
|
*/
|
|
/* Exported macro ------------------------------------------------------------*/
|
/* Exported functions --------------------------------------------------------*/
|
void PIT_DeInit(void);
|
void PIT_Init(uint8_t Channel,uint8_t PIT_Mode,uint16_t CLK_DIV);
|
|
/* PIT channel function-----------------------------------*/
|
void PIT_EnableCmd(uint8_t Channel,FunctionalState NewState);
|
void PIT_InterruptEn(uint8_t Channel,FunctionalState NewState);
|
|
void PIT_SetLoadCount(uint8_t Channel,uint32_t loadVal);
|
uint32_t PIT_GetCurrentVal(uint8_t Channel);
|
|
ITStatus PIT_GetIntStatus(uint8_t Channel);
|
void PIT_ClrInterrupt(uint8_t Channel);
|
|
/* PIT function-----------------------------------*/
|
uint8_t PIT_GetAllIntStatus(void);
|
void PIT_ClrAllInterrupt(void);
|
uint8_t PIT_GetRawIntStatus(void);
|
void PIT_ChainCmd(FunctionalState NewState);
|
void PIT_FreezeCmd(FunctionalState NewState);
|
|
|
#ifdef __cplusplus
|
}
|
#endif
|
|
#endif /*__XL_PIT_H__ */
|
|
/**
|
* @}
|
*/
|
|
/**
|
* @}
|
*/
|