CIU32_L051_M307R/Peripheral/CIU32L051_Lib/Include/ciu32l051_std_tamp.h

303 lines
8.3 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/************************************************************************************************/
/**
* @file ciu32l051_std_tamp.h
* @author MCU Ecosystem Development Team
* @brief TAMP STD库驱动头文件。
* 提供TAMP相关的STD库操作函数声明、数据类型以及常量的定义。
*
*
**************************************************************************************************
* @attention
* Copyright (c) CEC Huada Electronic Design Co.,Ltd. All rights reserved.
*
**************************************************************************************************
*/
/* 避免头文件重复引用 */
#ifndef CIU32L051_STD_TAMP_H
#define CIU32L051_STD_TAMP_H
/************************************************************************************************/
/**
* @addtogroup CIU32L051_STD_Driver
* @{
*/
/**
* @defgroup TAMP TAMP
* @brief 入侵检测和备份寄存器的STD库驱动
* @{
*/
/************************************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
/*------------------------------------------includes--------------------------------------------*/
#include "ciu32l051_std_common.h"
/*--------------------------------------------define--------------------------------------------*/
/************************************************************************************************/
/**
* @defgroup TAMP_Constants TAMP Constants
* @brief TAMP常量定义及宏定义
* @{
*
*/
/************************************************************************************************/
/* TAMP入侵检测源 */
#define TAMP_SOURCE_TAMP_IN TAMP_ENR_TAMPEN /**< 外部入侵检测(外部引脚) */
/* 外部入侵检测触发方式 */
#define TAMP_TRIGGER_RISING_EDGE (0x00000000U) /**< 上升沿触发 */
#define TAMP_TRIGGER_FALLING_EDGE (0x00000001U) /**< 下降沿触发 */
#define TAMP_TRIGGER_LOW_LEVEL TAMP_TRIGGER_RISING_EDGE /**< 低电平触发 */
#define TAMP_TRIGGER_HIGH_LEVEL TAMP_TRIGGER_FALLING_EDGE /**< 高电平触发 */
/* 外部入侵检测的数字滤波配置 */
#define TAMP_FILTER_DISABLE (0x00000000U) /**< 数字滤波关闭,采用边沿触发 */
#define TAMP_FILTER_2SAMPLE TAMP_FLTCR_2SAMPLE /**< 连续采样2个有效电平后触发 */
#define TAMP_FILTER_4SAMPLE TAMP_FLTCR_4SAMPLE /**< 连续采样4个有效电平后触发 */
#define TAMP_FILTER_8SAMPLE TAMP_FLTCR_8SAMPLE /**< 连续采样8个有效电平后触发 */
/* TAMP入侵检测中断使能控制 */
#define TAMP_INTERRUPT_TAMP_IN TAMP_IER_TAMPIE /**< 外部入侵检测(外部引脚)中断使能 */
/* 入侵检测标志 */
#define TAMP_FLAG_TAMP_IN TAMP_SR_TAMPF /**< 外部入侵检测(外部引脚)的标志 */
/* TAMP入侵检测中断状态标志 */
#define TAMP_INTERRUPT_FLAG_TAMP_IN TAMP_ISR_TAMPIF /**< 外部入侵检测(外部引脚)中断状态标志 */
/* 清除入侵检测标志 */
#define TAMP_CLEAR_FLAG_TAMP_IN TAMP_CLR_CTAMPF /**< 清除外部入侵检测(外部引脚)的标志 */
/* 备份寄存器数量 */
#define TAMP_BACKUP_NUMBER (0x00000005U)
/* 备份寄存器编号 */
#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对外函数
* @{
*
*/
/************************************************************************************************/
/**
* @brief 使能入侵检测
* @param source 入侵检测源
* @arg TAMP_SOURCE_TAMP_IN
* @retval 无
*/
__STATIC_INLINE void std_tamp_enable(uint32_t source)
{
TAMP->ENR |= source;
}
/**
* @brief 禁止入侵检测
* @param source 入侵检测源
* @arg TAMP_SOURCE_TAMP_IN
* @retval 无
*/
__STATIC_INLINE void std_tamp_disable(uint32_t source)
{
TAMP->ENR &= (~source);
}
/**
* @brief 读取入侵检测源
* @param source 入侵检测源
* @arg TAMP_SOURCE_TAMP_IN
* @retval uint32_t 入侵检测源使能情况
* @arg TAMP_SOURCE_TAMP_IN 外部入侵检测已使能
*/
__STATIC_INLINE bool std_tamp_get_source(uint32_t source)
{
return (TAMP->ENR & source);
}
/**
* @brief 使能入侵检测引脚上拉电阻
* @retval 无
*/
__STATIC_INLINE void std_tamp_pullup_enable(void)
{
TAMP->FLTCR |= TAMP_FLTCR_TAMPPUEN;
}
/**
* @brief 禁止入侵检测引脚上拉电阻
* @retval 无
*/
__STATIC_INLINE void std_tamp_pullup_disable(void)
{
TAMP->FLTCR &= (~TAMP_FLTCR_TAMPPUEN);
}
/**
* @brief 设置入侵检测触发方式
* @param trigger 触发方式
* @arg TAMP_TRIGGER_RISING_EDGE
* @arg TAMP_TRIGGER_FALLING_EDGE
* @arg TAMP_TRIGGER_LOW_LEVEL
* @arg TAMP_TRIGGER_HIGH_LEVEL
* @note 当滤波参数为0时 入侵检测将采用边沿检测模式
* 当滤波参数不为0时入侵检测将采用电平检测模式
* @retval 无
*/
__STATIC_INLINE void std_tamp_set_trigger(uint32_t trigger)
{
MODIFY_REG(TAMP->CR, TAMP_CR_TAMPTRIG, (trigger << TAMP_CR_TAMPTRIG_POS));
}
/**
* @brief 设置入侵检测数字滤波参数
* @param filter 入侵检测数字滤波参数
* @arg TAMP_FILTER_DISABLE
* @arg TAMP_FILTER_2SAMPLE
* @arg TAMP_FILTER_4SAMPLE
* @arg TAMP_FILTER_8SAMPLE
* @note 当滤波参数为0时 入侵检测将采用边沿检测模式
* 当滤波参数不为0时入侵检测将采用电平检测模式
* @retval 无
*/
__STATIC_INLINE void std_tamp_set_filter(uint32_t filter)
{
MODIFY_REG(TAMP->FLTCR, TAMP_FLTCR_TAMPFLT, filter);
}
/**
* @brief 使能备份寄存器擦除
* @retval 无
*/
__STATIC_INLINE void std_tamp_bkp_erase_enable(void)
{
TAMP->CR &= (~TAMP_CR_TAMPNOER);
}
/**
* @brief 禁止备份寄存器擦除
* @retval 无
*/
__STATIC_INLINE void std_tamp_bkp_erase_disable(void)
{
TAMP->CR |= TAMP_CR_TAMPNOER;
}
/**
* @brief 使能入侵检测中断
* @param tamp_interrupt 入侵检测源中断
* @arg TAMP_INTERRUPT_TAMP_IN
* @retval 无
*/
__STATIC_INLINE void std_tamp_interrupt_enable(uint32_t tamp_interrupt)
{
TAMP->IER |= tamp_interrupt;
}
/**
* @brief 禁止入侵检测中断
* @param tamp_interrupt 入侵检测源中断
* @arg TAMP_INTERRUPT_TAMP_IN
* @retval 无
*/
__STATIC_INLINE void std_tamp_interrupt_disable(uint32_t tamp_interrupt)
{
TAMP->IER &= (~tamp_interrupt);
}
/**
* @brief 读取入侵检测中断使能状态
* @param tamp_interrupt 入侵检测源中断
* @arg TAMP_INTERRUPT_TAMP_IN
* @retval bool 入侵检测中断使能状态
* @arg true 表示中断已使能
* @arg false 表示中断未使能
*/
__STATIC_INLINE bool std_tamp_get_interrupt_enable(uint32_t tamp_interrupt)
{
return ((TAMP->IER & tamp_interrupt) == tamp_interrupt);
}
/**
* @brief 读取入侵检测标志状态
* @param tamp_flag 入侵检测标志
* @arg TAMP_FLAG_TAMP_IN
* @retval bool 入侵检测标志状态
* @arg true 表示入侵检测已发生
* @arg false 表示入侵检测未发生
*/
__STATIC_INLINE uint32_t std_tamp_get_flag(uint32_t tamp_flag)
{
return ((TAMP->SR & tamp_flag) == tamp_flag);
}
/**
* @brief 清除入侵检测标志状态
* @param tamp_flag 入侵检测标志
* @arg TAMP_CLEAR_FLAG_IN_TAMP
* @retval 无
*/
__STATIC_INLINE void std_tamp_clear_flag(uint32_t tamp_flag)
{
TAMP->CLR = tamp_flag;
}
/**
* @brief 读取入侵检测中断状态
* @param interrupt_flag 入侵检测源中断标志
* @arg TAMP_INTERRUPT_FLAG_TAMP_IN
* @retval bool 入侵检测中断状态
* @arg true 表示中断已发生
* @arg false 表示中断未发生
*/
__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 */