1 2 3 4 #ifndef __CH57x_GPIO_H__ 5 #define __CH57x_GPIO_H__ 6 7 #ifdef __cplusplus 8 extern "C" { 9 #endif 10 11 #include "CH579SFR.h" 12 #include "core_cm0.h" 13 14 /** 15 * @brief GPIO_pins_define 16 */ 17 #define GPIO_Pin_0 (0x00000001) /*!< Pin 0 selected */ 18 #define GPIO_Pin_1 (0x00000002) /*!< Pin 1 selected */ 19 #define GPIO_Pin_2 (0x00000004) /*!< Pin 2 selected */ 20 #define GPIO_Pin_3 (0x00000008) /*!< Pin 3 selected */ 21 #define GPIO_Pin_4 (0x00000010) /*!< Pin 4 selected */ 22 #define GPIO_Pin_5 (0x00000020) /*!< Pin 5 selected */ 23 #define GPIO_Pin_6 (0x00000040) /*!< Pin 6 selected */ 24 #define GPIO_Pin_7 (0x00000080) /*!< Pin 7 selected */ 25 #define GPIO_Pin_8 (0x00000100) /*!< Pin 8 selected */ 26 #define GPIO_Pin_9 (0x00000200) /*!< Pin 9 selected */ 27 #define GPIO_Pin_10 (0x00000400) /*!< Pin 10 selected */ 28 #define GPIO_Pin_11 (0x00000800) /*!< Pin 11 selected */ 29 #define GPIO_Pin_12 (0x00001000) /*!< Pin 12 selected */ 30 #define GPIO_Pin_13 (0x00002000) /*!< Pin 13 selected */ 31 #define GPIO_Pin_14 (0x00004000) /*!< Pin 14 selected */ 32 #define GPIO_Pin_15 (0x00008000) /*!< Pin 15 selected */ 33 #define GPIO_Pin_16 (0x00010000) /*!< Pin 16 selected */ 34 #define GPIO_Pin_17 (0x00020000) /*!< Pin 17 selected */ 35 #define GPIO_Pin_18 (0x00040000) /*!< Pin 18 selected */ 36 #define GPIO_Pin_19 (0x00080000) /*!< Pin 19 selected */ 37 #define GPIO_Pin_20 (0x00100000) /*!< Pin 20 selected */ 38 #define GPIO_Pin_21 (0x00200000) /*!< Pin 21 selected */ 39 #define GPIO_Pin_22 (0x00400000) /*!< Pin 22 selected */ 40 #define GPIO_Pin_23 (0x00800000) /*!< Pin 23 selected */ 41 #define GPIO_Pin_All (0xFFFFFFFF) /*!< All pins selected */ 42 43 /** 44 * @brief Configuration GPIO Mode 45 */ 46 typedef enum 47 { 48 GPIO_ModeIN_Floating, //浮空输入 49 GPIO_ModeIN_PU, //上拉输入 50 GPIO_ModeIN_PD, //下拉输入 51 GPIO_ModeOut_PP_5mA, //推挽输出最大5mA 52 GPIO_ModeOut_PP_20mA, //推挽输出最大20mA 53 54 }GPIOModeTypeDef; 55 56 /** 57 * @brief Configuration GPIO IT Mode 58 */ 59 typedef enum 60 { 61 GPIO_ITMode_LowLevel, //低电平触发 62 GPIO_ITMode_HighLevel, //高电平触发 63 GPIO_ITMode_FallEdge, //下降沿触发 64 GPIO_ITMode_RiseEdge, //上升沿触发 65 66 }GPIOITModeTpDef; 67 68 69 70 71 void GPIOA_ModeCfg( UINT32 pin, GPIOModeTypeDef mode ); /* GPIOA端口引脚模式配置 */ 72 void GPIOB_ModeCfg( UINT32 pin, GPIOModeTypeDef mode ); /* GPIOB端口引脚模式配置 */ 73 #define GPIOA_ResetBits( pin ) (R32_PA_CLR |= pin) /* GPIOA端口引脚输出置低 */ 74 #define GPIOA_SetBits( pin ) (R32_PA_OUT |= pin) /* GPIOA端口引脚输出置高 */ 75 #define GPIOB_ResetBits( pin ) (R32_PB_CLR |= pin) /* GPIOB端口引脚输出置低 */ 76 #define GPIOB_SetBits( pin ) (R32_PB_OUT |= pin) /* GPIOB端口引脚输出置高 */ 77 #define GPIOA_InverseBits( pin ) (R32_PA_OUT ^= pin) /* GPIOA端口引脚输出电平翻转 */ 78 #define GPIOB_InverseBits( pin ) (R32_PB_OUT ^= pin) /* GPIOB端口引脚输出电平翻转 */ 79 #define GPIOA_ReadPort() (R32_PA_PIN) /* GPIOA端口32位数据返回,低16位有效 */ 80 #define GPIOB_ReadPort() (R32_PB_PIN) /* GPIOB端口32位数据返回,低24位有效 */ 81 #define GPIOA_ReadPortPin( pin ) (R32_PA_PIN&pin) /* GPIOA端口引脚状态,0-引脚低电平,(!0)-引脚高电平 */ 82 #define GPIOB_ReadPortPin( pin ) (R32_PB_PIN&pin) /* GPIOB端口引脚状态,0-引脚低电平,(!0)-引脚高电平 */ 83 84 void GPIOA_ITModeCfg( UINT32 pin, GPIOITModeTpDef mode ); /* GPIOA引脚中断模式配置 */ 85 void GPIOB_ITModeCfg( UINT32 pin, GPIOITModeTpDef mode ); /* GPIOB引脚中断模式配置 */ 86 #define GPIOA_ReadITFlagPort() (R16_PA_INT_IF) /* 读取GPIOA端口中断标志状态 */ 87 #define GPIOB_ReadITFlagPort() (R16_PB_INT_IF) /* 读取GPIOB端口中断标志状态 */ 88 #define GPIOA_ReadITFlagBit( pin ) (R16_PA_INT_IF&pin) /* 读取GPIOA端口引脚中断标志状态 */ 89 #define GPIOB_ReadITFlagBit( pin ) (R16_PB_INT_IF&pin) /* 读取GPIOB端口引脚中断标志状态 */ 90 #define GPIOA_ClearITFlagBit( pin ) (R16_PA_INT_IF = pin) /* 清除GPIOA端口引脚中断标志状态 */ 91 #define GPIOB_ClearITFlagBit( pin ) (R16_PB_INT_IF = pin) /* 清除GPIOB端口引脚中断标志状态 */ 92 93 void GPIOPinRemap( UINT8 s, UINT16 perph ); /* 外设功能引脚映射 */ 94 void GPIOAGPPCfg( UINT8 s, UINT16 perph ); /* 模拟外设GPIO引脚功能控制 */ 95 96 97 #ifdef __cplusplus 98 } 99 #endif 100 101 #endif // __CH57x_GPIO_H__ 102 103