// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // File name : eport_drv.h // Version : V0.1 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #ifndef EPORT_DRV_H_ #define EPORT_DRV_H_ #include "memmap.h" #include "eport_reg.h" #define EPORT ((EPORT_TypeDef *)(EPORT_BASE_ADDR)) #define EPORT1 ((EPORT_TypeDef *)(EPORT1_BASE_ADDR)) #define EPORT2 ((EPORT_TypeDef *)(EPORT2_BASE_ADDR)) #define EPORT3 ((EPORT_TypeDef *)(EPORT3_BASE_ADDR)) #define EPORT4 ((EPORT_TypeDef *)(EPORT4_BASE_ADDR)) extern unsigned char eport_isr_mark; typedef enum { /*EPORT0*/ EPORT_PIN0 = 0, EPORT_PIN1, EPORT_PIN2, EPORT_PIN3, EPORT_PIN4, EPORT_PIN5, EPORT_PIN6, EPORT_PIN7, /*EPORT1*/ EPORT_PIN8, EPORT_PIN9, EPORT_PIN10, EPORT_PIN11, EPORT_PIN12, EPORT_PIN13, EPORT_PIN14, EPORT_PIN15, /*EPORT2*/ EPORT_PIN16, EPORT_PIN17, EPORT_PIN18, EPORT_PIN19, EPORT_PIN20, EPORT_PIN21, EPORT_PIN22, EPORT_PIN23, /*EPORT3*/ EPORT_PIN24, EPORT_PIN25, EPORT_PIN26, EPORT_PIN27, EPORT_PIN28, EPORT_PIN29, EPORT_PIN30, EPORT_PIN31, /*EPORT4*/ EPORT_PIN32, EPORT_PIN33, EPORT_PIN34, EPORT_PIN35, EPORT_PIN36, EPORT_PIN37, EPORT_PIN38, EPORT_PIN39, }EPORT_PINx; #define IS_EPORT_PINx(PIN) (((PIN) == EPORT_PIN0) || \ ((PIN) == EPORT_PIN1) || \ ((PIN) == EPORT_PIN2) || \ ((PIN) == EPORT_PIN3) || \ ((PIN) == EPORT_PIN4) || \ ((PIN) == EPORT_PIN5) || \ ((PIN) == EPORT_PIN6) || \ ((PIN) == EPORT_PIN7) || \ ((PIN) == EPORT_PIN8) || \ ((PIN) == EPORT_PIN9) || \ ((PIN) == EPORT_PIN10)|| \ ((PIN) == EPORT_PIN11)|| \ ((PIN) == EPORT_PIN12)|| \ ((PIN) == EPORT_PIN13)|| \ ((PIN) == EPORT_PIN14)|| \ ((PIN) == EPORT_PIN15)|| \ ((PIN) == EPORT_PIN16)|| \ ((PIN) == EPORT_PIN17)|| \ ((PIN) == EPORT_PIN18)|| \ ((PIN) == EPORT_PIN19)|| \ ((PIN) == EPORT_PIN20)|| \ ((PIN) == EPORT_PIN21)|| \ ((PIN) == EPORT_PIN22)|| \ ((PIN) == EPORT_PIN23)|| \ ((PIN) == EPORT_PIN24)|| \ ((PIN) == EPORT_PIN25)|| \ ((PIN) == EPORT_PIN26)|| \ ((PIN) == EPORT_PIN27)|| \ ((PIN) == EPORT_PIN28)|| \ ((PIN) == EPORT_PIN29)|| \ ((PIN) == EPORT_PIN30)|| \ ((PIN) == EPORT_PIN31)|| \ ((PIN) == EPORT_PIN32)|| \ ((PIN) == EPORT_PIN33)|| \ ((PIN) == EPORT_PIN34)|| \ ((PIN) == EPORT_PIN35)|| \ ((PIN) == EPORT_PIN36)|| \ ((PIN) == EPORT_PIN37)|| \ ((PIN) == EPORT_PIN38)|| \ ((PIN) == EPORT_PIN39) ) #define LEVEL_H 1 #define LEVEL_L 0 #define EPORT_INPUT 0 #define EPROT_OUTPUT 1 typedef enum { LOW_LEVEL_INT = 0, HIGH_LEVEL_INT, RISING_EDGE_INT, FALLING_EDGE_INT, RISING_FALLING_EDGE_INT, }EPORT_INT_MODE; #define IS_EPORT_INT_MODE(MODE) (((MODE) == LOW_LEVEL_INT) || \ ((MODE) == HIGH_LEVEL_INT) || \ ((MODE) == RISING_EDGE_INT) || \ ((MODE) == FALLING_EDGE_INT) || \ ((MODE) == RISING_FALLING_EDGE_INT)) /******************************************************************************* * Function Name : EPORT_Init * Description : EPORT初始化 * Input : -PINx 中断引脚号 * -IntMode 中断模式 * * Output : None * Return : None ******************************************************************************/ extern void EPORT_Init(EPORT_PINx PINx,EPORT_INT_MODE IntMode); /******************************************************************************* * Function Name : EPORT_ConfigGpio * Description : EPORT配置成GPIO用途 * Input : - EPORT_PINx: EPORT Pin;where x can be 0~7 to select the EPORT peripheral. * - GpioDir:设置GPIO方向 GPIO_OUTPUT:输出 GPIO_INPUT:输入 * * Output : None * Return : None ******************************************************************************/ extern INT8 EPORT_ConfigGpio( EPORT_PINx GpioNo, UINT8 GpioDir); /******************************************************************************* * Function Name : EPORT_WriteGpioData * Description : 设置EPORT_PINx对应引脚的电平 * Input : - EPORT_PINx: EPORT Pin;where x can be 0~7 to select the EPORT peripheral. * - bitVal:设置的电平,Bit_SET:设置为高电平 Bit_RESET:设置为低电平 * * Output : None * Return : 0: 设置成功 other:设置失败 ******************************************************************************/ extern void EPORT_WriteGpioData(EPORT_PINx GpioNo, UINT8 bitVal); /******************************************************************************* * Function Name : EPORT_ReadGpioData * Description : 获取EPORT_PINx对应引脚的电平 * Input : - EPORT_PINx: EPORT Pin;where x can be 0~7 to select the EPORT peripheral. * * Output : None * Return : Bit_SET:高电平 Bit_RESET:低电平 -1:fail ******************************************************************************/ extern INT8 EPORT_ReadGpioData(EPORT_PINx GpioNo); /******************************************************************************* * Function Name : EPORT_ITTypeConfig * Description : 设置EPORT_PINx脚的中断触发方式,并使能中断 * Input : - EPORT_PINx: EPORT Pin;where x can be 0~7 to select the EPORT peripheral. * - IntMode:中断触发方式 * LOW_LEVEL_INT: 低电平触发 * HIGH_LEVEL_INT: 高电平触发 * RISING_EDGE_INT:上升沿触发 * FALLING_EDGE_INT:下降沿触发 * RISING_FALLING_EDGE_INT:上升沿或下降沿触发 * * Output : None * Return : None ******************************************************************************/ extern void EPORT_ITTypeConfig(EPORT_PINx IntNo, EPORT_INT_MODE IntMode); /******************************************************************************* * Function Name : EPORT_ITConfig * Description : EPORT中断使能控制 * Input : - EPORT_PINx: EPORT Pin;where x can be 0~7 to select the EPORT peripheral. * - NewState:new state of the specified EPORT interrupts. * This parameter can be: ENABLE or DISABLE. * * Output : None * Return : None ******************************************************************************/ extern void EPORT_ITConfig(EPORT_PINx IntNo, FunctionalState NewState); /******************************************************************************* * Function Name : EPORT_PullupConfig * Description : EPORT上拉使能控制 * Input : - EPORT_PINx: EPORT Pin;where x can be 0~7 to select the EPORT peripheral. * - NewState:new state of the specified EPORT Pullup. * This parameter can be: ENABLE or DISABLE. * * Output : None * Return : None ******************************************************************************/ extern void EPORT_PullupConfig(EPORT_PINx IntNo, FunctionalState NewState); #endif /* EPORT_DRV_H_ */