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