You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
250 lines
7.8 KiB
250 lines
7.8 KiB
/*********************************************************
|
|
*Copyright (C), 2015, Shanghai Eastsoft Microelectronics Co., Ltd.
|
|
*文件名: lib_gpio.h
|
|
*作 者: AE Team
|
|
*版 本: V1.01
|
|
*日 期: 2021/06/09
|
|
*描 述: GPIO模块库函头文件
|
|
*备 注:
|
|
本软件仅供学习和演示使用,对用户直接引用代码所带来的风险或后果不承担任何法律责任。
|
|
**********************************************************/
|
|
#ifndef __LIB_GPIO_H__
|
|
#define __LIB_GPIO_H__
|
|
|
|
#include <stdint.h>
|
|
#include "ES8P5066.h"
|
|
#include "type.h"
|
|
|
|
/* GPIO引脚编号 */
|
|
typedef enum
|
|
{
|
|
GPIO_Pin_B0 = 0,
|
|
GPIO_Pin_B1 = 1,
|
|
|
|
GPIO_Pin_B8 = 8,
|
|
GPIO_Pin_B9 = 9,
|
|
GPIO_Pin_B10 = 10,
|
|
GPIO_Pin_B11 = 11,
|
|
GPIO_Pin_B12 = 12,
|
|
GPIO_Pin_B13 = 13,
|
|
|
|
GPIO_Pin_A1 = 15,
|
|
GPIO_Pin_A2 = 16,
|
|
GPIO_Pin_A3 = 17,
|
|
GPIO_Pin_A4 = 18,
|
|
GPIO_Pin_A5 = 19,
|
|
GPIO_Pin_A6 = 20,
|
|
GPIO_Pin_A7 = 21,
|
|
GPIO_Pin_A8 = 22,
|
|
GPIO_Pin_A9 = 23,
|
|
GPIO_Pin_A10 = 24,
|
|
GPIO_Pin_A11 = 25,
|
|
GPIO_Pin_A12 = 26,
|
|
GPIO_Pin_A13 = 27,
|
|
GPIO_Pin_A14 = 28,
|
|
GPIO_Pin_A15 = 29,
|
|
GPIO_Pin_A16 = 30,
|
|
|
|
GPIO_Pin_A22 = 36,
|
|
GPIO_Pin_A23 = 37,
|
|
GPIO_Pin_A24 = 38,
|
|
GPIO_Pin_A25 = 39,
|
|
GPIO_Pin_A27 = 41,
|
|
GPIO_Pin_A28 = 42,
|
|
|
|
} GPIO_Pin;
|
|
|
|
/* 引脚复用功能选择 */
|
|
typedef enum
|
|
{
|
|
GPIO_Reuse_Func0 = 0, /* 引脚复用功能0 */
|
|
GPIO_Reuse_Func1 = 1, /* 引脚复用功能1 */
|
|
GPIO_Reuse_Func2 = 2, /* 引脚复用功能2 */
|
|
GPIO_Reuse_Func3 = 3, /* 引脚复用功能3 */
|
|
} GPIO_Reuse_Func;
|
|
|
|
/* 引脚方向选择 */
|
|
typedef enum
|
|
{
|
|
GPIO_Direction_Output = 0, /* 输出方向 */
|
|
GPIO_Direction_Input = 1, /* 输入方向 */
|
|
} GPIO_Direction;
|
|
|
|
/* 引脚输出开漏使能位 */
|
|
typedef enum
|
|
{
|
|
GPIO_ODE_Output_Disable = 0, /* 开漏禁止 */
|
|
GPIO_ODE_Output_Enable = 1, /* 开漏使能 */
|
|
} GPIO_ODE_Output;
|
|
|
|
/* 引脚输出电流驱动能力选择 */
|
|
typedef enum
|
|
{
|
|
GPIO_DS_Output_Normal = 0, /* 普通电流输出 */
|
|
GPIO_DS_Output_Strong = 1, /* 强电流输出 */
|
|
} GPIO_DS_Output;
|
|
|
|
/* 引脚输入弱上拉使能 */
|
|
typedef enum
|
|
{
|
|
GPIO_PUE_Input_Disable = 0, /* 弱上拉禁止 */
|
|
GPIO_PUE_Input_Enable = 1, /* 弱上拉使能 */
|
|
} GPIO_PUE_Input;
|
|
|
|
/* 引脚输入弱下拉使能 */
|
|
typedef enum
|
|
{
|
|
GPIO_PDE_Input_Disable = 0, /* 弱下拉禁止 */
|
|
GPIO_PDE_Input_Enable = 1, /* 弱下拉使能 */
|
|
} GPIO_PDE_Input;
|
|
|
|
/* 引脚信号类型 */
|
|
typedef enum
|
|
{
|
|
GPIO_Pin_Signal_Digital = 0, /* 数字信号引脚 */
|
|
GPIO_Pin_Signal_Analog = 1, /* 模拟信号引脚 */
|
|
} GPIO_Pin_Signal;
|
|
|
|
/* 引脚类型 */
|
|
typedef enum
|
|
{
|
|
GPIO_Pin_CMOS = 0, /* CMOS引脚 */
|
|
GPIO_Pin_TTL = 1, /* TTL引脚 */
|
|
} GPIO_Pin_Type;
|
|
|
|
/* 引脚滤波使能 */
|
|
typedef enum
|
|
{
|
|
GPIO_FLT_Disable = 0, /* 端口滤波禁止 */
|
|
GPIO_FLT_Enable = 1, /* 端口滤波使能 */
|
|
} GPIO_Pin_FLT;
|
|
|
|
/* GPIO初始化配置结构定义 */
|
|
typedef struct
|
|
{
|
|
GPIO_Pin_Signal Signal; /* 引脚上的信号类型,只有模拟和数字两种 */
|
|
|
|
GPIO_Direction Dir; /* 数字引脚时,引脚输入、输出方向选择 */
|
|
GPIO_Reuse_Func Func; /* 数字引脚时,引脚复用功能选择 */
|
|
|
|
GPIO_ODE_Output ODE; /* 数字引脚、输出方向时,开漏输出选择 */
|
|
GPIO_DS_Output DS; /* 数字引脚、输出方向时,电流输出大小选择 */
|
|
|
|
GPIO_PUE_Input PUE; /* 数字引脚、输入方向时,弱上拉选择 */
|
|
GPIO_PDE_Input PDE; /* 数字引脚、输入方向时,弱下拉选择 */
|
|
} GPIO_InitSettingType;
|
|
|
|
/* 外部端口中断使能 */
|
|
typedef enum
|
|
{
|
|
PINT_IE_Set_Disable = 0, /* 中断禁止 */
|
|
PINT_IE_Set_Enable = 1, /* 中断使能 */
|
|
} PINT_IE_Set;
|
|
|
|
/* 外部端口中断触发方式 */
|
|
typedef enum
|
|
{
|
|
PINT_Trigger_Rising_Edge = 0, /* 上升沿触发中断 */
|
|
PINT_Trigger_Trailing_Edge = 1, /* 下降沿触发中断 */
|
|
PINT_Trigger_High_Level = 2, /* 高电平触发中断 */
|
|
PINT_Trigger_Low_Level = 3, /* 低电平触发中断 */
|
|
PINT_Trigger_Both_Edge = 4, /* 上升沿和下降沿都触发中断 */
|
|
} PINT_Trigger_Style;
|
|
|
|
/* 外部端口初始化配置结构定义 */
|
|
typedef struct
|
|
{
|
|
PINT_IE_Set IE_Set; /* 中断是否使能 */
|
|
PINT_Trigger_Style Trigger_Style; /* 中断触发方式 */
|
|
} PINT_InitSettingType;
|
|
|
|
/* KINT中断使能 */
|
|
typedef enum
|
|
{
|
|
KINT_IE_Set_Disable = 0, /* 中断禁止 */
|
|
KINT_IE_Set_Enable = 1, /* 中断使能 */
|
|
} KINT_IE_Set;
|
|
|
|
/* KINT中断方式 */
|
|
typedef enum
|
|
{
|
|
KINT_Trigger_Rising_Edge = 0, /* 上升沿触发中断 */
|
|
KINT_Trigger_Trailing_Edge = 1, /* 下降沿触发中断 */
|
|
KINT_Trigger_High_Level = 2, /* 高电平触发中断 */
|
|
KINT_Trigger_Low_Level = 3, /* 低电平触发中断 */
|
|
KINT_Trigger_Both_Edge = 4, /* 上升沿和下降沿都触发中断 */
|
|
} KINT_Trigger_Style;
|
|
|
|
/* KINT初始化配置结构定义 */
|
|
typedef struct
|
|
{
|
|
KINT_IE_Set IE_Set; /* 中断是否使能 */
|
|
KINT_Trigger_Style Trigger_Style; /* 中断触发方式 */
|
|
} KINT_InitSettingType;
|
|
|
|
/* 脉宽调制电平 */
|
|
typedef enum
|
|
{
|
|
UART_TXPLV_Low = 0x0, /* 脉宽调制电平:低 */
|
|
UART_TXPLV_High = 0x1, /* 脉宽调制电平:高 */
|
|
} UART_TYPE_TXPLV;
|
|
|
|
|
|
/* 脉宽PWM脉冲选择 */
|
|
typedef enum
|
|
{
|
|
UART_TX0PS_NO = 0x0, /* 脉宽PWM脉冲选择:非调制输出 */
|
|
UART_TX0PS_T16N0Out0 = 0x1, /* 脉宽PWM脉冲选择:T16N1OUT0 */
|
|
UART_TX0PS_T16N0Out1 = 0x2, /* 脉宽PWM脉冲选择:T16N1OUT1 */
|
|
UART_TX0PS_BUZ = 0x3, /* 脉宽PWM脉冲选择:BUZ,需要固定38K输出 */
|
|
} UART_TYPE_TX0PS;
|
|
|
|
typedef enum
|
|
{
|
|
UART_TX1PS_NO = 0x0, /* 脉宽PWM脉冲选择:非调制输出 */
|
|
UART_TX1PS_T16N1Out0 = 0x1, /* 脉宽PWM脉冲选择:T16N1OUT0 */
|
|
UART_TX1PS_T16N1Out1 = 0x2, /* 脉宽PWM脉冲选择:T16N1OUT1 */
|
|
UART_TX1PS_BUZ = 0x3, /* 脉宽PWM脉冲选择:BUZ,需要固定38K输出 */
|
|
} UART_TYPE_TX1PS;
|
|
|
|
|
|
/*调制波形输出管脚配置*/
|
|
typedef enum
|
|
{
|
|
UART_TYPE_E0TX0 = 0, /* E0TX0管脚输出 */
|
|
UART_TYPE_T16N1OUT0 = 1, /* T16N1OUT0管脚输出 */
|
|
UART_TYPE_T16N1OUT1 = 2, /* T16N1OUT1管脚输出 */
|
|
UART_TYPE_TX1BUZ = 3, /* BUZ管脚输出 */
|
|
} UART_TYPE_TX1Sx;
|
|
|
|
typedef enum
|
|
{
|
|
UART_TYPE_TXD0 = 0, /* TXD0管脚输出 */
|
|
UART_TYPE_T16N0OUT0 = 1, /* T16N0OUT0管脚输出 */
|
|
UART_TYPE_T16N0OUT1 = 2, /* T16N0OUT1管脚输出 */
|
|
UART_TYPE_TX0BUZ = 3, /* BUZ管脚输出 */
|
|
} UART_TYPE_TX0Sx;
|
|
|
|
/********************* GPIO模块函数声明 *********************/
|
|
void GPIO_Init(GPIO_Pin Pin, GPIO_InitSettingType *InitSet);
|
|
uint32_t GPIO_ReadBit(GPIO_Pin Pin);
|
|
void GPIO_WriteBit(GPIO_Pin Pin, uint32_t value);
|
|
void GPIO_SetBit(GPIO_Pin Pin);
|
|
void GPIO_ResetBit(GPIO_Pin Pin);
|
|
void GPIO_ToggleBit(GPIO_Pin Pin);
|
|
void PINT_Init(GPIO_Pin Pin, PINT_InitSettingType *InitSet);
|
|
void PINT_ClearITFlag(GPIO_Pin Pin);
|
|
uint32_t PINT_GetITStatus(GPIO_Pin Pin);
|
|
uint32_t PINT_GetITFlag(GPIO_Pin Pin);
|
|
void PINT_SetPMASK(GPIO_Pin Pin, PINT_IE_Set IE);
|
|
uint32_t PINT_GetPMASK(GPIO_Pin Pin);
|
|
void KINT_Init(GPIO_Pin Pin, KINT_InitSettingType *InitSet);
|
|
void KINT_ClearITFlag(GPIO_Pin Pin);
|
|
uint32_t KINT_GetITStatus(GPIO_Pin Pin);
|
|
uint32_t KINT_GetITFlag(GPIO_Pin Pin);
|
|
void KINT_SetKMASK(GPIO_Pin Pin, KINT_IE_Set IE);
|
|
uint32_t KINT_GetKMASK(GPIO_Pin Pin);
|
|
void GPIO_TX0Config(UART_TYPE_TXPLV Plv, UART_TYPE_TX0PS Ps, UART_TYPE_TX0Sx TX0Sx, TYPE_FUNCEN NewState);
|
|
|
|
#endif
|
|
|