1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#ifndef GPIO_H__
#define GPIO_H__
typedef enum
{
GPIO_PORT_GROUP_0 = 0U,
GPIO_PORT_GROUP_1 = 1U,
GPIO_PORT_GROUP_3 = 3U,
GPIO_PORT_GROUP_10 = 10U,
GPIO_PORT_GROUP_11 = 11U,
GPIO_PORT_GROUP_16 = 16U,
GPIO_PORT_GROUP_17 = 17U,
GPIO_PORT_GROUP_21 = 21U,
GPIO_PORT_GROUP_22 = 22U,
GPIO_PORT_GROUP_42 = 42U,
GPIO_PORT_GROUP_43 = 43U,
GPIO_PORT_GROUP_44 = 44U,
GPIO_PORT_GROUP_45 = 45U,
GPIO_PORT_GROUP_JP0 = 46U,
} GPIO_Port_en_t;
typedef enum
{
GPIO_PIN_0 = 0X0U,
GPIO_PIN_1,
GPIO_PIN_2,
GPIO_PIN_3,
GPIO_PIN_4,
GPIO_PIN_5,
GPIO_PIN_6,
GPIO_PIN_7,
GPIO_PIN_8,
GPIO_PIN_9,
GPIO_PIN_10,
GPIO_PIN_11,
GPIO_PIN_12,
GPIO_PIN_13,
GPIO_PIN_14,
GPIO_PIN_15,
} GPIO_PIN_en_t;
typedef enum
{
GPIO_Input_Buf_Close = 0U,
GPIO_Input_Buf_Open,
} GPIO_Buf_Control_en_t;
typedef enum
{
GPIO_MODE_PORT = 0U,
GPIO_MODE_ALTER_SOFTWARE,
GPIO_MODE_ALTER_DIRECT,
} GPIO_Mode_en_t;
typedef enum
{
GPIO_ALTER_FUN_1 = 0U,
GPIO_ALTER_FUN_2,
GPIO_ALTER_FUN_3,
GPIO_ALTER_FUN_4,
GPIO_ALTER_FUN_5,
GPIO_ALTER_FUN_6,
} GPIO_Alter_Fuction_en_t;
typedef enum
{
GPIO_DIR_OUT = 0U,
GPIO_DIR_IN
} GPIO_Direction_en_t;
typedef enum
{
GPIO_Level_Low = 0U,
GPIO_Level_High,
} GPIO_Level_en_t;
typedef enum
{
GPIO_PULL_NONE = 0U,
GPIO_PULL_UP,
GPIO_PULL_DOWN,
} GPIO_Pull_en_t;
typedef enum
{
GPIO_Drive_Slow = 0U,
GPIO_Drive_Fast,
} GPIO_Strength_en_t;
typedef enum
{
GPIO_Char_TTL = 0U,
GPIO_Char_CMOS1,
GPIO_Char_Schmitt1,
GPIO_Char_Schmitt4,
} GPIO_Characteristics_en_t;
typedef struct
{
GPIO_Port_en_t enGPIOPort;
GPIO_PIN_en_t enGPIOPIN;
GPIO_Strength_en_t enGPIODrive;
GPIO_Characteristics_en_t enGPIOCharacter;
GPIO_Pull_en_t enGPIOPull;
GPIO_Level_en_t enGPIOOutputValue;
GPIO_Mode_en_t enGPIOMode;
GPIO_Direction_en_t enGPIODir;
GPIO_Alter_Fuction_en_t enGPIOAltFun;
} GPIO_Config_st_t;
typedef enum
{
GPIO_WAKEUP_MODE = 0U,
GPIO_SLEEP_MODE,
} GPIO_Config_Mode_en_t;
typedef enum
{
GPIO_WAKEUP_PIN_P0_0 = 0X06U,
GPIO_WAKEUP_PIN_P0_1 = 0X01U,
GPIO_WAKEUP_PIN_P0_2 = 0X02U,
GPIO_WAKEUP_PIN_P0_3 = 0X03U,
GPIO_WAKEUP_PIN_P0_4 = 0X06U,
GPIO_WAKEUP_PIN_P0_5 = 0X07U,
GPIO_WAKEUP_PIN_P0_6 = 0X08U,
GPIO_WAKEUP_PIN_P0_7 = 0X09U,
GPIO_WAKEUP_PIN_P0_8 = 0X0AU,
GPIO_WAKEUP_PIN_P0_9 = 0X0BU,
} GPIO_Wakeup_PIN_en_t;
typedef enum
{
GPIO_WAKEUP_NONE = 0X0U,
GPIO_WAKEUP_RISING_EDGE,
GPIO_WAKEUP_FALLING_EDGE,
GPIO_WAKEUP_BOTH_EDGE,
GPIO_WAKEUP_LOW_LEVEL,
GPIO_WAKEUP_HIGH_LEVEL,
} GPIO_Wakeup_Trigger_Mode_en_t;
/**/
void GPIO_Config(GPIO_Config_st_t *pstGPIOConfig);
extern void GPIO_Init(GPIO_Config_Mode_en_t enGPIOConfigMode);
extern void GPIO_Wakeup_PIN_Set(GPIO_Wakeup_PIN_en_t enGPIOWakeupPIN, GPIO_Wakeup_Trigger_Mode_en_t enGPIOTrigger);
extern void Sys_Enter_Sleep_Mode(void);
#endif