CIU32_L051_M307R/Peripheral/CIU32L051_Lib/Include/ciu32l051_std_tamp.h

303 lines
8.3 KiB
C
Raw Normal View History

/************************************************************************************************/
/**
* @file ciu32l051_std_tamp.h
* @author MCU Ecosystem Development Team
* @brief TAMP STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD>TAMP<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD>
*
*
**************************************************************************************************
* @attention
* Copyright (c) CEC Huada Electronic Design Co.,Ltd. All rights reserved.
*
**************************************************************************************************
*/
/* <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD><C4BC>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD> */
#ifndef CIU32L051_STD_TAMP_H
#define CIU32L051_STD_TAMP_H
/************************************************************************************************/
/**
* @addtogroup CIU32L051_STD_Driver
* @{
*/
/**
* @defgroup TAMP TAMP
* @brief <EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><EFBFBD>ݼĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @{
*/
/************************************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
/*------------------------------------------includes--------------------------------------------*/
#include "ciu32l051_std_common.h"
/*--------------------------------------------define--------------------------------------------*/
/************************************************************************************************/
/**
* @defgroup TAMP_Constants TAMP Constants
* @brief TAMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @{
*
*/
/************************************************************************************************/
/* TAMP<4D><50><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD>Դ */
#define TAMP_SOURCE_TAMP_IN TAMP_ENR_TAMPEN /**< <20>ⲿ<EFBFBD><E2B2BF><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>ţ<EFBFBD> */
/* <20>ⲿ<EFBFBD><E2B2BF><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD><E2B4A5><EFBFBD><EFBFBD>ʽ */
#define TAMP_TRIGGER_RISING_EDGE (0x00000000U) /**< <20><><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><D8B4><EFBFBD> */
#define TAMP_TRIGGER_FALLING_EDGE (0x00000001U) /**< <20>½<EFBFBD><C2BD>ش<EFBFBD><D8B4><EFBFBD> */
#define TAMP_TRIGGER_LOW_LEVEL TAMP_TRIGGER_RISING_EDGE /**< <20>͵<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD> */
#define TAMP_TRIGGER_HIGH_LEVEL TAMP_TRIGGER_FALLING_EDGE /**< <20>ߵ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD> */
/* <20>ⲿ<EFBFBD><E2B2BF><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD> */
#define TAMP_FILTER_DISABLE (0x00000000U) /**< <20><><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><CBB2>رգ<D8B1><D5A3><EFBFBD><EFBFBD>ñ<EFBFBD><C3B1>ش<EFBFBD><D8B4><EFBFBD> */
#define TAMP_FILTER_2SAMPLE TAMP_FLTCR_2SAMPLE /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>ƽ<EFBFBD>󴥷<EFBFBD> */
#define TAMP_FILTER_4SAMPLE TAMP_FLTCR_4SAMPLE /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><34><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>ƽ<EFBFBD>󴥷<EFBFBD> */
#define TAMP_FILTER_8SAMPLE TAMP_FLTCR_8SAMPLE /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD><38><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>ƽ<EFBFBD>󴥷<EFBFBD> */
/* TAMP<4D><50><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD>ܿ<EFBFBD><DCBF><EFBFBD> */
#define TAMP_INTERRUPT_TAMP_IN TAMP_IER_TAMPIE /**< <20>ⲿ<EFBFBD><E2B2BF><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>ţ<EFBFBD><C5A3>ж<EFBFBD>ʹ<EFBFBD><CAB9> */
/* <20><><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD><EFBFBD><EFBFBD>־ */
#define TAMP_FLAG_TAMP_IN TAMP_SR_TAMPF /**< <20>ⲿ<EFBFBD><E2B2BF><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>ţ<EFBFBD><C5A3>ı<EFBFBD>־ */
/* TAMP<4D><50><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD><EFBFBD>ж<EFBFBD>״̬<D7B4><CCAC>־ */
#define TAMP_INTERRUPT_FLAG_TAMP_IN TAMP_ISR_TAMPIF /**< <20>ⲿ<EFBFBD><E2B2BF><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>ţ<EFBFBD><C5A3>ж<EFBFBD>״̬<D7B4><CCAC>־ */
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD><EFBFBD><EFBFBD>־ */
#define TAMP_CLEAR_FLAG_TAMP_IN TAMP_CLR_CTAMPF /**< <20><><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>ּ<EFBFBD><D6BC><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>ţ<EFBFBD><C5A3>ı<EFBFBD>־ */
/* <20><><EFBFBD>ݼĴ<DDBC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#define TAMP_BACKUP_NUMBER (0x00000005U)
/* <20><><EFBFBD>ݼĴ<DDBC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#define TAMP_BACKUP_DR0 (TAMP->BKP0R)
#define TAMP_BACKUP_DR1 (TAMP->BKP1R)
#define TAMP_BACKUP_DR2 (TAMP->BKP2R)
#define TAMP_BACKUP_DR3 (TAMP->BKP3R)
#define TAMP_BACKUP_DR4 (TAMP->BKP4R)
/**
* @}
*/
/*-------------------------------------------functions------------------------------------------*/
/************************************************************************************************/
/**
* @defgroup TAMP_External_Functions TAMP External Functions
* @brief TAMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @{
*
*/
/************************************************************************************************/
/**
* @brief ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD>
* @param source <EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD>Դ
* @arg TAMP_SOURCE_TAMP_IN
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_tamp_enable(uint32_t source)
{
TAMP->ENR |= source;
}
/**
* @brief <EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD>
* @param source <EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD>Դ
* @arg TAMP_SOURCE_TAMP_IN
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_tamp_disable(uint32_t source)
{
TAMP->ENR &= (~source);
}
/**
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD>Դ
* @param source <EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD>Դ
* @arg TAMP_SOURCE_TAMP_IN
* @retval uint32_t <EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD>Դʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg TAMP_SOURCE_TAMP_IN <EFBFBD>ⲿ<EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>
*/
__STATIC_INLINE bool std_tamp_get_source(uint32_t source)
{
return (TAMP->ENR & source);
}
/**
* @brief ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_tamp_pullup_enable(void)
{
TAMP->FLTCR |= TAMP_FLTCR_TAMPPUEN;
}
/**
* @brief <EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_tamp_pullup_disable(void)
{
TAMP->FLTCR &= (~TAMP_FLTCR_TAMPPUEN);
}
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
* @param trigger <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
* @arg TAMP_TRIGGER_RISING_EDGE
* @arg TAMP_TRIGGER_FALLING_EDGE
* @arg TAMP_TRIGGER_LOW_LEVEL
* @arg TAMP_TRIGGER_HIGH_LEVEL
* @note <EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0ʱ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><EFBFBD>ؼ<EFBFBD><EFBFBD><EFBFBD>ģʽ
* <EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_tamp_set_trigger(uint32_t trigger)
{
MODIFY_REG(TAMP->CR, TAMP_CR_TAMPTRIG, (trigger << TAMP_CR_TAMPTRIG_POS));
}
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param filter <EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg TAMP_FILTER_DISABLE
* @arg TAMP_FILTER_2SAMPLE
* @arg TAMP_FILTER_4SAMPLE
* @arg TAMP_FILTER_8SAMPLE
* @note <EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0ʱ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><EFBFBD>ؼ<EFBFBD><EFBFBD><EFBFBD>ģʽ
* <EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_tamp_set_filter(uint32_t filter)
{
MODIFY_REG(TAMP->FLTCR, TAMP_FLTCR_TAMPFLT, filter);
}
/**
* @brief ʹ<EFBFBD>ܱ<EFBFBD><EFBFBD>ݼĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_tamp_bkp_erase_enable(void)
{
TAMP->CR &= (~TAMP_CR_TAMPNOER);
}
/**
* @brief <EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD>ݼĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_tamp_bkp_erase_disable(void)
{
TAMP->CR |= TAMP_CR_TAMPNOER;
}
/**
* @brief ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
* @param tamp_interrupt <EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>ж<EFBFBD>
* @arg TAMP_INTERRUPT_TAMP_IN
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_tamp_interrupt_enable(uint32_t tamp_interrupt)
{
TAMP->IER |= tamp_interrupt;
}
/**
* @brief <EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
* @param tamp_interrupt <EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>ж<EFBFBD>
* @arg TAMP_INTERRUPT_TAMP_IN
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_tamp_interrupt_disable(uint32_t tamp_interrupt)
{
TAMP->IER &= (~tamp_interrupt);
}
/**
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>״̬
* @param tamp_interrupt <EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>ж<EFBFBD>
* @arg TAMP_INTERRUPT_TAMP_IN
* @retval bool <EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>״̬
* @arg true <EFBFBD><EFBFBD>ʾ<EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>
* @arg false <EFBFBD><EFBFBD>ʾ<EFBFBD>ж<EFBFBD>δʹ<EFBFBD><EFBFBD>
*/
__STATIC_INLINE bool std_tamp_get_interrupt_enable(uint32_t tamp_interrupt)
{
return ((TAMP->IER & tamp_interrupt) == tamp_interrupt);
}
/**
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־״̬
* @param tamp_flag <EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
* @arg TAMP_FLAG_TAMP_IN
* @retval bool <EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־״̬
* @arg true <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѷ<EFBFBD><EFBFBD><EFBFBD>
* @arg false <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
__STATIC_INLINE uint32_t std_tamp_get_flag(uint32_t tamp_flag)
{
return ((TAMP->SR & tamp_flag) == tamp_flag);
}
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־״̬
* @param tamp_flag <EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
* @arg TAMP_CLEAR_FLAG_IN_TAMP
* @retval <EFBFBD><EFBFBD>
*/
__STATIC_INLINE void std_tamp_clear_flag(uint32_t tamp_flag)
{
TAMP->CLR = tamp_flag;
}
/**
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>״̬
* @param interrupt_flag <EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>жϱ<EFBFBD>־
* @arg TAMP_INTERRUPT_FLAG_TAMP_IN
* @retval bool <EFBFBD><EFBFBD><EFBFBD>ּ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>״̬
* @arg true <EFBFBD><EFBFBD>ʾ<EFBFBD>ж<EFBFBD><EFBFBD>ѷ<EFBFBD><EFBFBD><EFBFBD>
* @arg false <EFBFBD><EFBFBD>ʾ<EFBFBD>ж<EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
__STATIC_INLINE bool std_tamp_get_interrupt_flag(uint32_t interrupt_flag)
{
return ((TAMP->ISR & interrupt_flag) == interrupt_flag);
}
void std_tamp_deinit(void);
/**
* @}
*/
#ifdef __cplusplus
}
#endif
/**
* @}
*/
/**
* @}
*/
#endif /* CIU32L051_STD_TAMP_H */