#include "hc32l1xx_ll_exti.h"
///
//函 数:
//功 能:
//输入参数:
//输出参数:
//说 明:
//
void LL_EXTI_DeInit(EXIT_TypeDef* EXITx)
{
//---高低电平中断的配置
LL_EXTI_DisableIT_HighLevel(EXITx, LL_EXTI_GPIO_PIN_ALL);
LL_EXTI_DisableIT_LowLevel(EXITx, LL_EXTI_GPIO_PIN_ALL);
//---上升下降沿中断的配置
LL_EXTI_DisableIT_RisingEdge(EXITx, LL_EXTI_GPIO_PIN_ALL);
LL_EXTI_DisableIT_FallingEdge(EXITx, LL_EXTI_GPIO_PIN_ALL);
}
///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
void LL_EXTI_StructInit(LL_EXTI_InitTypeDef* EXTI_InitStruct)
{
EXTI_InitStruct->Pin = LL_EXTI_GPIO_PIN_ALL;
EXTI_InitStruct->Level = LL_EXTI_LEVEL_HIGH;
EXTI_InitStruct->Edge = LL_EXTI_EDGE_RISE;
}
///
//函 数:
//功 能:
//输入参数:
//输出参数:
//说 明:
//
void LL_EXTI_Init(EXIT_TypeDef* EXITx, LL_EXTI_InitTypeDef* EXTI_InitStruct)
{
//---高低电平中断的配置
LL_EXTI_DisableIT_HighLevel(EXITx, EXTI_InitStruct->Pin);
LL_EXTI_DisableIT_LowLevel(EXITx, EXTI_InitStruct->Pin);
//---高低电平中断的配置
if (EXTI_InitStruct->Level == LL_EXTI_LEVEL_HIGH)
{
LL_EXTI_EnableIT_HighLevel(EXITx, EXTI_InitStruct->Pin);
}
else if (EXTI_InitStruct->Level == LL_EXTI_LEVEL_LOW)
{
LL_EXTI_EnableIT_LowLevel(EXITx, EXTI_InitStruct->Pin);
}
else if (EXTI_InitStruct->Level == LL_EXTI_LEVEL_ALL)
{
LL_EXTI_EnableIT_HighLevel(EXITx, EXTI_InitStruct->Pin);
LL_EXTI_EnableIT_LowLevel(EXITx, EXTI_InitStruct->Pin);
}
//---上升下降沿中断的配置
LL_EXTI_DisableIT_RisingEdge(EXITx, EXTI_InitStruct->Pin);
LL_EXTI_DisableIT_FallingEdge(EXITx, EXTI_InitStruct->Pin);
//---上升下降沿中断的配置
if (EXTI_InitStruct->Edge == LL_EXTI_EDGE_RISE)
{
LL_EXTI_EnableIT_RisingEdge(EXITx, EXTI_InitStruct->Pin);
}
else if (EXTI_InitStruct->Edge == LL_EXTI_EDGE_FALL)
{
LL_EXTI_EnableIT_FallingEdge(EXITx, EXTI_InitStruct->Pin);
}
else if (EXTI_InitStruct->Edge == LL_EXTI_EDGE_ALL)
{
LL_EXTI_EnableIT_RisingEdge(EXITx, EXTI_InitStruct->Pin);
LL_EXTI_EnableIT_FallingEdge(EXITx, EXTI_InitStruct->Pin);
}
//---清除中断标志位
LL_EXTI_ClearFlag(EXITx, EXTI_InitStruct->Pin);
}
#ifndef HC32L1XX_LL_EXIT_H_
#define HC32L1XX_LL_EXIT_H_
#ifdef __cplusplus
extern "C" {
#endif
#include "hc32l1xx.h"
///
#define LL_EXTI_GPIO_PIN_0 EXIT_PIN_0
#define LL_EXTI_GPIO_PIN_1 EXIT_PIN_1
#define LL_EXTI_GPIO_PIN_2 EXIT_PIN_2
#define LL_EXTI_GPIO_PIN_3 EXIT_PIN_3
#define LL_EXTI_GPIO_PIN_4 EXIT_PIN_4
#define LL_EXTI_GPIO_PIN_5 EXIT_PIN_5
#define LL_EXTI_GPIO_PIN_6 EXIT_PIN_6
#define LL_EXTI_GPIO_PIN_7 EXIT_PIN_7
#define LL_EXTI_GPIO_PIN_8 EXIT_PIN_8
#define LL_EXTI_GPIO_PIN_9 EXIT_PIN_9
#define LL_EXTI_GPIO_PIN_10 EXIT_PIN_10
#define LL_EXTI_GPIO_PIN_11 EXIT_PIN_11
#define LL_EXTI_GPIO_PIN_12 EXIT_PIN_12
#define LL_EXTI_GPIO_PIN_13 EXIT_PIN_13
#define LL_EXTI_GPIO_PIN_14 EXIT_PIN_14
#define LL_EXTI_GPIO_PIN_15 EXIT_PIN_15
#define LL_EXTI_GPIO_PIN_ALL (LL_EXTI_GPIO_PIN_0|LL_EXTI_GPIO_PIN_1|\
LL_EXTI_GPIO_PIN_2|LL_EXTI_GPIO_PIN_3|\
LL_EXTI_GPIO_PIN_4|LL_EXTI_GPIO_PIN_5|\
LL_EXTI_GPIO_PIN_6|LL_EXTI_GPIO_PIN_7|\
LL_EXTI_GPIO_PIN_8|LL_EXTI_GPIO_PIN_9|\
LL_EXTI_GPIO_PIN_10|LL_EXTI_GPIO_PIN_11|\
LL_EXTI_GPIO_PIN_12|LL_EXTI_GPIO_PIN_13|\
LL_EXTI_GPIO_PIN_14|LL_EXTI_GPIO_PIN_15)
#define LL_EXTI_LEVEL_NONE 0
#define LL_EXTI_LEVEL_HIGH 1
#define LL_EXTI_LEVEL_LOW 2
#define LL_EXTI_LEVEL_ALL 3
#define LL_EXTI_EDGE_NONE 0
#define LL_EXTI_EDGE_RISE 1
#define LL_EXTI_EDGE_FALL 2
#define LL_EXTI_EDGE_ALL 3
///
//函 数:
//功 能:
//输入参数:
//输出参数:
//说 明:
//
static inline void LL_EXTI_EnableIT_HighLevel(EXIT_TypeDef* EXITx,uint32_t pin)
{
SET_BIT(EXITx->HIE, pin);
}
///
//函 数:
//功 能:
//输入参数:
//输出参数:
//说 明:
//
static inline void LL_EXTI_DisableIT_HighLevel(EXIT_TypeDef* EXITx, uint32_t pin)
{
CLEAR_BIT(EXITx->HIE, pin);
}
///
//函 数:
//功 能:
//输入参数:
//输出参数:
//说 明:
//
static inline uint32_t LL_EXTI_IsEnabledIT_HighLevel(EXIT_TypeDef* EXITx, uint32_t pin)
{
return (uint32_t)(READ_BIT(EXITx->HIE, pin)==pin);
}
///
//函 数:
//功 能:
//输入参数:
//输出参数:
//说 明:
//
static inline void LL_EXTI_EnableIT_LowLevel(EXIT_TypeDef* EXITx, uint32_t pin)
{
SET_BIT(EXITx->LIE, pin);
}
///
//函 数:
//功 能:
//输入参数:
//输出参数:
//说 明:
//
static inline void LL_EXTI_DisableIT_LowLevel(EXIT_TypeDef* EXITx, uint32_t pin)
{
CLEAR_BIT(EXITx->LIE, pin);
}
///
//函 数:
//功 能:
//输入参数:
//输出参数:
//说 明:
//
static inline uint32_t LL_EXTI_IsEnabledIT_LowLevel(EXIT_TypeDef* EXITx, uint32_t pin)
{
return (uint32_t)(READ_BIT(EXITx->LIE, pin) == pin);
}
///
//函 数:
//功 能:
//输入参数:
//输出参数:
//说 明:
//
static inline void LL_EXTI_EnableIT_RisingEdge(EXIT_TypeDef* EXITx, uint32_t pin)
{
SET_BIT(EXITx->RIE, pin);
}
///
//函 数:
//功 能:
//输入参数:
//输出参数:
//说 明:
//
static inline void LL_EXTI_DisableIT_RisingEdge(EXIT_TypeDef* EXITx, uint32_t pin)
{
CLEAR_BIT(EXITx->RIE, pin);
}
///
//函 数:
//功 能:
//输入参数:
//输出参数:
//说 明:
//
static inline uint32_t LL_EXTI_IsEnabledIT_RisingEdge(EXIT_TypeDef* EXITx, uint32_t pin)
{
return (uint32_t)(READ_BIT(EXITx->RIE, pin) == pin);
}
///
//函 数:
//功 能:
//输入参数:
//输出参数:
//说 明:
//
static inline void LL_EXTI_EnableIT_FallingEdge(EXIT_TypeDef* EXITx, uint32_t pin)
{
SET_BIT(EXITx->FIE, pin);
}
///
//函 数:
//功 能: 中断标志
//输入参数:
//输出参数:
//说 明:
//
static inline void LL_EXTI_DisableIT_FallingEdge(EXIT_TypeDef* EXITx, uint32_t pin)
{
CLEAR_BIT(EXITx->FIE, pin);
}
///
//函 数:
//功 能: 中断标志
//输入参数:
//输出参数:
//说 明:
//
static inline uint32_t LL_EXTI_IsEnabledIT_FallingEdge(EXIT_TypeDef* EXITx, uint32_t pin)
{
return (uint32_t)(READ_BIT(EXITx->FIE, pin) == pin);
}
///
//函 数:
//功 能: 中断标志
//输入参数:
//输出参数:
//说 明:
//
static inline uint32_t LL_EXTI_IsActiveFlag(EXIT_TypeDef* EXITx, uint32_t pin)
{
return (uint32_t)(READ_BIT(EXITx->SR, pin) == pin);
}
///
//函 数:
//功 能: 清除中断标志
//输入参数:
//输出参数:
//说 明:
//
static inline void LL_EXTI_ClearFlag(EXIT_TypeDef* EXITx, uint32_t pin)
{
CLEAR_BIT(EXITx->CSR, pin);
}
//===GPIO初始化结构体
typedef struct
{
uint32_t Pin; //---引脚
uint32_t Level; //---电平模式,高电平,低电平
uint32_t Edge; //---沿模式,上升沿,下降沿
} LL_EXTI_InitTypeDef;
//===函数定义
void LL_EXTI_DeInit(EXIT_TypeDef* EXITx);
void LL_EXTI_StructInit(LL_EXTI_InitTypeDef* EXTI_InitStruct);
void LL_EXTI_Init(EXIT_TypeDef* EXITx , LL_EXTI_InitTypeDef* EXTI_InitStruct);
///
#ifdef __cplusplus
}
#endif
#endif /* HC32L1XX_LL_DAC_H */