@@ -107,26 +107,25 @@ typedef enum
107
107
108
108
/** @defgroup GPIO_mode GPIO mode
109
109
* @brief GPIO Configuration Mode
110
- * Elements values convention: 0xX0yz00YZ
111
- * - X : GPIO mode or EXTI Mode
112
- * - y : External IT or Event trigger detection
113
- * - z : IO configuration on External IT or Event
114
- * - Y : Output type (Push Pull or Open Drain)
115
- * - Z : IO Direction mode (Input, Output, Alternate or Analog)
110
+ * Elements values convention: 0x00WX00YZ
111
+ * - W : EXTI trigger detection on 3 bits
112
+ * - X : EXTI mode (IT or Event) on 2 bits
113
+ * - Y : Output type (Push Pull or Open Drain) on 1 bit
114
+ * - Z : GPIO mode (Input, Output, Alternate or Analog) on 2 bits
116
115
* @{
117
116
*/
118
- #define GPIO_MODE_INPUT (0x00000000U) /*!< Input Floating Mode */
119
- #define GPIO_MODE_OUTPUT_PP (0x00000001U) /*!< Output Push Pull Mode */
120
- #define GPIO_MODE_OUTPUT_OD (0x00000011U) /*!< Output Open Drain Mode */
121
- #define GPIO_MODE_AF_PP (0x00000002U) /*!< Alternate Function Push Pull Mode */
122
- #define GPIO_MODE_AF_OD (0x00000012U) /*!< Alternate Function Open Drain Mode */
123
- #define GPIO_MODE_ANALOG (0x00000003U) /*!< Analog Mode */
124
- #define GPIO_MODE_IT_RISING (0x10110000U) /*!< External Interrupt Mode with Rising edge trigger detection */
125
- #define GPIO_MODE_IT_FALLING (0x10210000U) /*!< External Interrupt Mode with Falling edge trigger detection */
126
- #define GPIO_MODE_IT_RISING_FALLING (0x10310000U ) /*!< External Interrupt Mode with Rising/Falling edge trigger detection */
127
- #define GPIO_MODE_EVT_RISING (0x10120000U) /*!< External Event Mode with Rising edge trigger detection */
128
- #define GPIO_MODE_EVT_FALLING (0x10220000U) /*!< External Event Mode with Falling edge trigger detection */
129
- #define GPIO_MODE_EVT_RISING_FALLING (0x10320000U ) /*!< External Event Mode with Rising/Falling edge trigger detection */
117
+ #define GPIO_MODE_INPUT MODE_INPUT /*!< Input Floating Mode */
118
+ #define GPIO_MODE_OUTPUT_PP (MODE_OUTPUT | OUTPUT_PP) /*!< Output Push Pull Mode */
119
+ #define GPIO_MODE_OUTPUT_OD (MODE_OUTPUT | OUTPUT_OD) /*!< Output Open Drain Mode */
120
+ #define GPIO_MODE_AF_PP (MODE_AF | OUTPUT_PP) /*!< Alternate Function Push Pull Mode */
121
+ #define GPIO_MODE_AF_OD (MODE_AF | OUTPUT_OD) /*!< Alternate Function Open Drain Mode */
122
+ #define GPIO_MODE_ANALOG MODE_ANALOG /*!< Analog Mode */
123
+ #define GPIO_MODE_IT_RISING (MODE_INPUT | EXTI_IT | TRIGGER_RISING) /*!< External Interrupt Mode with Rising edge trigger detection */
124
+ #define GPIO_MODE_IT_FALLING (MODE_INPUT | EXTI_IT | TRIGGER_FALLING) /*!< External Interrupt Mode with Falling edge trigger detection */
125
+ #define GPIO_MODE_IT_RISING_FALLING (MODE_INPUT | EXTI_IT | TRIGGER_RISING | TRIGGER_FALLING ) /*!< External Interrupt Mode with Rising/Falling edge trigger detection */
126
+ #define GPIO_MODE_EVT_RISING (MODE_INPUT | EXTI_EVT | TRIGGER_RISING) /*!< External Event Mode with Rising edge trigger detection */
127
+ #define GPIO_MODE_EVT_FALLING (MODE_INPUT | EXTI_EVT | TRIGGER_FALLING) /*!< External Event Mode with Falling edge trigger detection */
128
+ #define GPIO_MODE_EVT_RISING_FALLING (MODE_INPUT | EXTI_EVT | TRIGGER_RISING | TRIGGER_FALLING ) /*!< External Event Mode with Rising/Falling edge trigger detection */
130
129
/**
131
130
* @}
132
131
*/
@@ -135,10 +134,10 @@ typedef enum
135
134
* @brief GPIO Output Maximum frequency
136
135
* @{
137
136
*/
138
- #define GPIO_SPEED_FREQ_LOW (0x00000000U) /*!< Low speed */
139
- #define GPIO_SPEED_FREQ_MEDIUM (0x00000001U) /*!< Medium speed */
140
- #define GPIO_SPEED_FREQ_HIGH (0x00000002U) /*!< High speed */
141
- #define GPIO_SPEED_FREQ_VERY_HIGH (0x00000003U) /*!< Very high speed */
137
+ #define GPIO_SPEED_FREQ_LOW 0x00000000u /*!< Low speed */
138
+ #define GPIO_SPEED_FREQ_MEDIUM 0x00000001u /*!< Medium speed */
139
+ #define GPIO_SPEED_FREQ_HIGH 0x00000002u /*!< High speed */
140
+ #define GPIO_SPEED_FREQ_VERY_HIGH 0x00000003u /*!< Very high speed */
142
141
/**
143
142
* @}
144
143
*/
@@ -147,9 +146,9 @@ typedef enum
147
146
* @brief GPIO Pull-Up or Pull-Down Activation
148
147
* @{
149
148
*/
150
- #define GPIO_NOPULL (0x00000000U) /*!< No Pull-up or Pull-down activation */
151
- #define GPIO_PULLUP (0x00000001U) /*!< Pull-up activation */
152
- #define GPIO_PULLDOWN (0x00000002U) /*!< Pull-down activation */
149
+ #define GPIO_NOPULL 0x00000000u /*!< No Pull-up or Pull-down activation */
150
+ #define GPIO_PULLUP 0x00000001u /*!< Pull-up activation */
151
+ #define GPIO_PULLDOWN 0x00000002u /*!< Pull-down activation */
153
152
/**
154
153
* @}
155
154
*/
@@ -208,6 +207,32 @@ typedef enum
208
207
*/
209
208
210
209
/* Private macros ------------------------------------------------------------*/
210
+ /** @defgroup GPIO_Private_Constants GPIO Private Constants
211
+ * @{
212
+ */
213
+ #define GPIO_MODE_Pos 0u
214
+ #define GPIO_MODE (0x3uL << GPIO_MODE_Pos)
215
+ #define MODE_INPUT (0x0uL << GPIO_MODE_Pos)
216
+ #define MODE_OUTPUT (0x1uL << GPIO_MODE_Pos)
217
+ #define MODE_AF (0x2uL << GPIO_MODE_Pos)
218
+ #define MODE_ANALOG (0x3uL << GPIO_MODE_Pos)
219
+ #define OUTPUT_TYPE_Pos 4u
220
+ #define OUTPUT_TYPE (0x1uL << OUTPUT_TYPE_Pos)
221
+ #define OUTPUT_PP (0x0uL << OUTPUT_TYPE_Pos)
222
+ #define OUTPUT_OD (0x1uL << OUTPUT_TYPE_Pos)
223
+ #define EXTI_MODE_Pos 16u
224
+ #define EXTI_MODE (0x3uL << EXTI_MODE_Pos)
225
+ #define EXTI_IT (0x1uL << EXTI_MODE_Pos)
226
+ #define EXTI_EVT (0x2uL << EXTI_MODE_Pos)
227
+ #define TRIGGER_MODE_Pos 20u
228
+ #define TRIGGER_MODE (0x7uL << TRIGGER_MODE_Pos)
229
+ #define TRIGGER_RISING (0x1uL << TRIGGER_MODE_Pos)
230
+ #define TRIGGER_FALLING (0x2uL << TRIGGER_MODE_Pos)
231
+
232
+ /**
233
+ * @}
234
+ */
235
+
211
236
/** @defgroup GPIO_Private_Macros GPIO Private Macros
212
237
* @{
213
238
*/
0 commit comments