/**
  *****************************************************************************
  * @file    drv_gpio_def.h
  * @author  Product application department
  * @version V1.0
  * @date    2020.02.25
  * @brief   Header file of DRV_GPIO_DEF.
  *
  ******************************************************************************
  */

#ifndef DRV_GPIO_DEF_H_
#define DRV_GPIO_DEF_H_

#include "type.h"

/**
* @brief  GPIO输入/输出定义
*
*/
typedef enum
{
	GPIO_DIR_IN,
	GPIO_DIR_OUT,
	GPIo_DIR_TRIGATE,

}GPIO_DirTypeDef,EPORT_DirTypeDef;

/**
* @brief  GPIO输入模式定义
*
*/
typedef enum
{
	 GPIO_INPUT_MODE_CMOS,
	 GPIO_INPUT_MODE_SCHMITT,
}GPIO_InputModeTypeDef;

/**
* @brief  GPIO输出模式定义
*
*/
typedef enum
{
	GPIO_OUTPUT_MODE_OPEN_DRAIN,
	GPIO_OUTPUT_MODE_CMOS
}GPIO_OutputModeTypeDef;

/**
* @brief  上下拉模式定义
*
*/
typedef enum
{
	GPIO_PULL_MODE_NOPULL,
	GPIO_PULL_MODE_UP,
	GPIO_PULL_MODE_DOWN,
}GPIO_PullModeTypeDef;

/**
* @brief  GPIO反转速度定义
*
*/
typedef enum
{
	GPIO_SLEW_RATE_FALST,
	GPIO_SLEW_RATE_SLOW,
}GPIO_SlewRateTypeDef;

/**
* @brief  GPIO驱动电流定义
*
*/
typedef enum
{
	GPIO_DRIVE_STRENGTH_2MA,
	GPIO_DRIVE_STRENGTH_4MA,
	GPIO_DRIVE_STRENGTH_8MA,
	GPIO_DRIVE_STRENGTH_12MA,
}GPIO_DriveStrengthTypeDef;

/**
* @brief  GPIO初始化结构体定义
*
*/
typedef struct
{
	uint8_t Pin;
	uint8_t Dir;
	uint8_t PullMode;
	uint8_t OutputMode;
	uint8_t InputMode;
	uint8_t SlewRateSel;
	uint8_t DriveStrength;

}GPIO_InitTypeDef;

#endif /* DRV_GPIO_DEF_H_ */

