1 /**
2 ******************************************************************************
3 * @file stm32f0xx_ll_gpio.h
4 * @author MCD Application Team
5 * @brief Header file of GPIO LL module.
6 ******************************************************************************
7 * @attention
8 *
9 * Copyright (c) 2016 STMicroelectronics.
10 * All rights reserved.
11 *
12 * This software is licensed under terms that can be found in the LICENSE file
13 * in the root directory of this software component.
14 * If no LICENSE file comes with this software, it is provided AS-IS.
15 *
16 ******************************************************************************
17 */
18
19 /* Define to prevent recursive inclusion -------------------------------------*/
20 #ifndef __STM32F0xx_LL_GPIO_H
21 #define __STM32F0xx_LL_GPIO_H
22
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26
27 /* Includes ------------------------------------------------------------------*/
28 #include "stm32f0xx.h"
29
30 /** @addtogroup STM32F0xx_LL_Driver
31 * @{
32 */
33
34 #if defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF)
35
36 /** @defgroup GPIO_LL GPIO
37 * @{
38 */
39
40 /* Private types -------------------------------------------------------------*/
41 /* Private variables ---------------------------------------------------------*/
42 /* Private constants ---------------------------------------------------------*/
43 /* Private macros ------------------------------------------------------------*/
44 #if defined(USE_FULL_LL_DRIVER)
45 /** @defgroup GPIO_LL_Private_Macros GPIO Private Macros
46 * @{
47 */
48
49 /**
50 * @}
51 */
52 #endif /*USE_FULL_LL_DRIVER*/
53
54 /* Exported types ------------------------------------------------------------*/
55 #if defined(USE_FULL_LL_DRIVER)
56 /** @defgroup GPIO_LL_ES_INIT GPIO Exported Init structures
57 * @{
58 */
59
60 /**
61 * @brief LL GPIO Init Structure definition
62 */
63 typedef struct
64 {
65 uint32_t Pin; /*!< Specifies the GPIO pins to be configured.
66 This parameter can be any value of @ref GPIO_LL_EC_PIN */
67
68 uint32_t Mode; /*!< Specifies the operating mode for the selected pins.
69 This parameter can be a value of @ref GPIO_LL_EC_MODE.
70
71 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinMode().*/
72
73 uint32_t Speed; /*!< Specifies the speed for the selected pins.
74 This parameter can be a value of @ref GPIO_LL_EC_SPEED.
75
76 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinSpeed().*/
77
78 uint32_t OutputType; /*!< Specifies the operating output type for the selected pins.
79 This parameter can be a value of @ref GPIO_LL_EC_OUTPUT.
80
81 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinOutputType().*/
82
83 uint32_t Pull; /*!< Specifies the operating Pull-up/Pull down for the selected pins.
84 This parameter can be a value of @ref GPIO_LL_EC_PULL.
85
86 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinPull().*/
87
88 uint32_t Alternate; /*!< Specifies the Peripheral to be connected to the selected pins.
89 This parameter can be a value of @ref GPIO_LL_EC_AF.
90
91 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetAFPin_0_7() and LL_GPIO_SetAFPin_8_15().*/
92 } LL_GPIO_InitTypeDef;
93
94 /**
95 * @}
96 */
97 #endif /* USE_FULL_LL_DRIVER */
98
99 /* Exported constants --------------------------------------------------------*/
100 /** @defgroup GPIO_LL_Exported_Constants GPIO Exported Constants
101 * @{
102 */
103
104 /** @defgroup GPIO_LL_EC_PIN PIN
105 * @{
106 */
107 #define LL_GPIO_PIN_0 GPIO_BSRR_BS_0 /*!< Select pin 0 */
108 #define LL_GPIO_PIN_1 GPIO_BSRR_BS_1 /*!< Select pin 1 */
109 #define LL_GPIO_PIN_2 GPIO_BSRR_BS_2 /*!< Select pin 2 */
110 #define LL_GPIO_PIN_3 GPIO_BSRR_BS_3 /*!< Select pin 3 */
111 #define LL_GPIO_PIN_4 GPIO_BSRR_BS_4 /*!< Select pin 4 */
112 #define LL_GPIO_PIN_5 GPIO_BSRR_BS_5 /*!< Select pin 5 */
113 #define LL_GPIO_PIN_6 GPIO_BSRR_BS_6 /*!< Select pin 6 */
114 #define LL_GPIO_PIN_7 GPIO_BSRR_BS_7 /*!< Select pin 7 */
115 #define LL_GPIO_PIN_8 GPIO_BSRR_BS_8 /*!< Select pin 8 */
116 #define LL_GPIO_PIN_9 GPIO_BSRR_BS_9 /*!< Select pin 9 */
117 #define LL_GPIO_PIN_10 GPIO_BSRR_BS_10 /*!< Select pin 10 */
118 #define LL_GPIO_PIN_11 GPIO_BSRR_BS_11 /*!< Select pin 11 */
119 #define LL_GPIO_PIN_12 GPIO_BSRR_BS_12 /*!< Select pin 12 */
120 #define LL_GPIO_PIN_13 GPIO_BSRR_BS_13 /*!< Select pin 13 */
121 #define LL_GPIO_PIN_14 GPIO_BSRR_BS_14 /*!< Select pin 14 */
122 #define LL_GPIO_PIN_15 GPIO_BSRR_BS_15 /*!< Select pin 15 */
123 #define LL_GPIO_PIN_ALL (GPIO_BSRR_BS_0 | GPIO_BSRR_BS_1 | GPIO_BSRR_BS_2 | \
124 GPIO_BSRR_BS_3 | GPIO_BSRR_BS_4 | GPIO_BSRR_BS_5 | \
125 GPIO_BSRR_BS_6 | GPIO_BSRR_BS_7 | GPIO_BSRR_BS_8 | \
126 GPIO_BSRR_BS_9 | GPIO_BSRR_BS_10 | GPIO_BSRR_BS_11 | \
127 GPIO_BSRR_BS_12 | GPIO_BSRR_BS_13 | GPIO_BSRR_BS_14 | \
128 GPIO_BSRR_BS_15) /*!< Select all pins */
129 /**
130 * @}
131 */
132
133 /** @defgroup GPIO_LL_EC_MODE Mode
134 * @{
135 */
136 #define LL_GPIO_MODE_INPUT (0x00000000U) /*!< Select input mode */
137 #define LL_GPIO_MODE_OUTPUT GPIO_MODER_MODER0_0 /*!< Select output mode */
138 #define LL_GPIO_MODE_ALTERNATE GPIO_MODER_MODER0_1 /*!< Select alternate function mode */
139 #define LL_GPIO_MODE_ANALOG GPIO_MODER_MODER0 /*!< Select analog mode */
140 /**
141 * @}
142 */
143
144 /** @defgroup GPIO_LL_EC_OUTPUT Output Type
145 * @{
146 */
147 #define LL_GPIO_OUTPUT_PUSHPULL (0x00000000U) /*!< Select push-pull as output type */
148 #define LL_GPIO_OUTPUT_OPENDRAIN GPIO_OTYPER_OT_0 /*!< Select open-drain as output type */
149 /**
150 * @}
151 */
152
153 /** @defgroup GPIO_LL_EC_SPEED Output Speed
154 * @{
155 */
156 #define LL_GPIO_SPEED_FREQ_LOW (0x00000000U) /*!< Select I/O low output speed */
157 #define LL_GPIO_SPEED_FREQ_MEDIUM GPIO_OSPEEDR_OSPEEDR0_0 /*!< Select I/O medium output speed */
158 #define LL_GPIO_SPEED_FREQ_HIGH GPIO_OSPEEDR_OSPEEDR0 /*!< Select I/O high output speed */
159 /**
160 * @}
161 */
162 #define LL_GPIO_SPEED_LOW LL_GPIO_SPEED_FREQ_LOW
163 #define LL_GPIO_SPEED_MEDIUM LL_GPIO_SPEED_FREQ_MEDIUM
164 #define LL_GPIO_SPEED_HIGH LL_GPIO_SPEED_FREQ_HIGH
165
166 /** @defgroup GPIO_LL_EC_PULL Pull Up Pull Down
167 * @{
168 */
169 #define LL_GPIO_PULL_NO (0x00000000U) /*!< Select I/O no pull */
170 #define LL_GPIO_PULL_UP GPIO_PUPDR_PUPDR0_0 /*!< Select I/O pull up */
171 #define LL_GPIO_PULL_DOWN GPIO_PUPDR_PUPDR0_1 /*!< Select I/O pull down */
172 /**
173 * @}
174 */
175
176 /** @defgroup GPIO_LL_EC_AF Alternate Function
177 * @{
178 */
179 #define LL_GPIO_AF_0 (0x0000000U) /*!< Select alternate function 0 */
180 #define LL_GPIO_AF_1 (0x0000001U) /*!< Select alternate function 1 */
181 #define LL_GPIO_AF_2 (0x0000002U) /*!< Select alternate function 2 */
182 #define LL_GPIO_AF_3 (0x0000003U) /*!< Select alternate function 3 */
183 #define LL_GPIO_AF_4 (0x0000004U) /*!< Select alternate function 4 */
184 #define LL_GPIO_AF_5 (0x0000005U) /*!< Select alternate function 5 */
185 #define LL_GPIO_AF_6 (0x0000006U) /*!< Select alternate function 6 */
186 #define LL_GPIO_AF_7 (0x0000007U) /*!< Select alternate function 7 */
187 /**
188 * @}
189 */
190
191 /**
192 * @}
193 */
194
195 /* Exported macro ------------------------------------------------------------*/
196 /** @defgroup GPIO_LL_Exported_Macros GPIO Exported Macros
197 * @{
198 */
199
200 /** @defgroup GPIO_LL_EM_WRITE_READ Common Write and read registers Macros
201 * @{
202 */
203
204 /**
205 * @brief Write a value in GPIO register
206 * @param __INSTANCE__ GPIO Instance
207 * @param __REG__ Register to be written
208 * @param __VALUE__ Value to be written in the register
209 * @retval None
210 */
211 #define LL_GPIO_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
212
213 /**
214 * @brief Read a value in GPIO register
215 * @param __INSTANCE__ GPIO Instance
216 * @param __REG__ Register to be read
217 * @retval Register value
218 */
219 #define LL_GPIO_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
220 /**
221 * @}
222 */
223
224 /**
225 * @}
226 */
227
228 /* Exported functions --------------------------------------------------------*/
229 /** @defgroup GPIO_LL_Exported_Functions GPIO Exported Functions
230 * @{
231 */
232
233 /** @defgroup GPIO_LL_EF_Port_Configuration Port Configuration
234 * @{
235 */
236
237 /**
238 * @brief Configure gpio mode for a dedicated pin on dedicated port.
239 * @note I/O mode can be Input mode, General purpose output, Alternate function mode or Analog.
240 * @note Warning: only one pin can be passed as parameter.
241 * @rmtoll MODER MODEy LL_GPIO_SetPinMode
242 * @param GPIOx GPIO Port
243 * @param Pin This parameter can be one of the following values:
244 * @arg @ref LL_GPIO_PIN_0
245 * @arg @ref LL_GPIO_PIN_1
246 * @arg @ref LL_GPIO_PIN_2
247 * @arg @ref LL_GPIO_PIN_3
248 * @arg @ref LL_GPIO_PIN_4
249 * @arg @ref LL_GPIO_PIN_5
250 * @arg @ref LL_GPIO_PIN_6
251 * @arg @ref LL_GPIO_PIN_7
252 * @arg @ref LL_GPIO_PIN_8
253 * @arg @ref LL_GPIO_PIN_9
254 * @arg @ref LL_GPIO_PIN_10
255 * @arg @ref LL_GPIO_PIN_11
256 * @arg @ref LL_GPIO_PIN_12
257 * @arg @ref LL_GPIO_PIN_13
258 * @arg @ref LL_GPIO_PIN_14
259 * @arg @ref LL_GPIO_PIN_15
260 * @param Mode This parameter can be one of the following values:
261 * @arg @ref LL_GPIO_MODE_INPUT
262 * @arg @ref LL_GPIO_MODE_OUTPUT
263 * @arg @ref LL_GPIO_MODE_ALTERNATE
264 * @arg @ref LL_GPIO_MODE_ANALOG
265 * @retval None
266 */
LL_GPIO_SetPinMode(GPIO_TypeDef * GPIOx,uint32_t Pin,uint32_t Mode)267 __STATIC_INLINE void LL_GPIO_SetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Mode)
268 {
269 MODIFY_REG(GPIOx->MODER, ((Pin * Pin) * GPIO_MODER_MODER0), ((Pin * Pin) * Mode));
270 }
271
272 /**
273 * @brief Return gpio mode for a dedicated pin on dedicated port.
274 * @note I/O mode can be Input mode, General purpose output, Alternate function mode or Analog.
275 * @note Warning: only one pin can be passed as parameter.
276 * @rmtoll MODER MODEy LL_GPIO_GetPinMode
277 * @param GPIOx GPIO Port
278 * @param Pin This parameter can be one of the following values:
279 * @arg @ref LL_GPIO_PIN_0
280 * @arg @ref LL_GPIO_PIN_1
281 * @arg @ref LL_GPIO_PIN_2
282 * @arg @ref LL_GPIO_PIN_3
283 * @arg @ref LL_GPIO_PIN_4
284 * @arg @ref LL_GPIO_PIN_5
285 * @arg @ref LL_GPIO_PIN_6
286 * @arg @ref LL_GPIO_PIN_7
287 * @arg @ref LL_GPIO_PIN_8
288 * @arg @ref LL_GPIO_PIN_9
289 * @arg @ref LL_GPIO_PIN_10
290 * @arg @ref LL_GPIO_PIN_11
291 * @arg @ref LL_GPIO_PIN_12
292 * @arg @ref LL_GPIO_PIN_13
293 * @arg @ref LL_GPIO_PIN_14
294 * @arg @ref LL_GPIO_PIN_15
295 * @retval Returned value can be one of the following values:
296 * @arg @ref LL_GPIO_MODE_INPUT
297 * @arg @ref LL_GPIO_MODE_OUTPUT
298 * @arg @ref LL_GPIO_MODE_ALTERNATE
299 * @arg @ref LL_GPIO_MODE_ANALOG
300 */
LL_GPIO_GetPinMode(GPIO_TypeDef * GPIOx,uint32_t Pin)301 __STATIC_INLINE uint32_t LL_GPIO_GetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin)
302 {
303 return (uint32_t)(READ_BIT(GPIOx->MODER, ((Pin * Pin) * GPIO_MODER_MODER0)) / (Pin * Pin));
304 }
305
306 /**
307 * @brief Configure gpio output type for several pins on dedicated port.
308 * @note Output type as to be set when gpio pin is in output or
309 * alternate modes. Possible type are Push-pull or Open-drain.
310 * @rmtoll OTYPER OTy LL_GPIO_SetPinOutputType
311 * @param GPIOx GPIO Port
312 * @param PinMask This parameter can be a combination of the following values:
313 * @arg @ref LL_GPIO_PIN_0
314 * @arg @ref LL_GPIO_PIN_1
315 * @arg @ref LL_GPIO_PIN_2
316 * @arg @ref LL_GPIO_PIN_3
317 * @arg @ref LL_GPIO_PIN_4
318 * @arg @ref LL_GPIO_PIN_5
319 * @arg @ref LL_GPIO_PIN_6
320 * @arg @ref LL_GPIO_PIN_7
321 * @arg @ref LL_GPIO_PIN_8
322 * @arg @ref LL_GPIO_PIN_9
323 * @arg @ref LL_GPIO_PIN_10
324 * @arg @ref LL_GPIO_PIN_11
325 * @arg @ref LL_GPIO_PIN_12
326 * @arg @ref LL_GPIO_PIN_13
327 * @arg @ref LL_GPIO_PIN_14
328 * @arg @ref LL_GPIO_PIN_15
329 * @arg @ref LL_GPIO_PIN_ALL
330 * @param OutputType This parameter can be one of the following values:
331 * @arg @ref LL_GPIO_OUTPUT_PUSHPULL
332 * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN
333 * @retval None
334 */
LL_GPIO_SetPinOutputType(GPIO_TypeDef * GPIOx,uint32_t PinMask,uint32_t OutputType)335 __STATIC_INLINE void LL_GPIO_SetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t PinMask, uint32_t OutputType)
336 {
337 MODIFY_REG(GPIOx->OTYPER, PinMask, (PinMask * OutputType));
338 }
339
340 /**
341 * @brief Return gpio output type for several pins on dedicated port.
342 * @note Output type as to be set when gpio pin is in output or
343 * alternate modes. Possible type are Push-pull or Open-drain.
344 * @note Warning: only one pin can be passed as parameter.
345 * @rmtoll OTYPER OTy LL_GPIO_GetPinOutputType
346 * @param GPIOx GPIO Port
347 * @param Pin This parameter can be one of the following values:
348 * @arg @ref LL_GPIO_PIN_0
349 * @arg @ref LL_GPIO_PIN_1
350 * @arg @ref LL_GPIO_PIN_2
351 * @arg @ref LL_GPIO_PIN_3
352 * @arg @ref LL_GPIO_PIN_4
353 * @arg @ref LL_GPIO_PIN_5
354 * @arg @ref LL_GPIO_PIN_6
355 * @arg @ref LL_GPIO_PIN_7
356 * @arg @ref LL_GPIO_PIN_8
357 * @arg @ref LL_GPIO_PIN_9
358 * @arg @ref LL_GPIO_PIN_10
359 * @arg @ref LL_GPIO_PIN_11
360 * @arg @ref LL_GPIO_PIN_12
361 * @arg @ref LL_GPIO_PIN_13
362 * @arg @ref LL_GPIO_PIN_14
363 * @arg @ref LL_GPIO_PIN_15
364 * @arg @ref LL_GPIO_PIN_ALL
365 * @retval Returned value can be one of the following values:
366 * @arg @ref LL_GPIO_OUTPUT_PUSHPULL
367 * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN
368 */
LL_GPIO_GetPinOutputType(GPIO_TypeDef * GPIOx,uint32_t Pin)369 __STATIC_INLINE uint32_t LL_GPIO_GetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t Pin)
370 {
371 return (uint32_t)(READ_BIT(GPIOx->OTYPER, Pin) / Pin);
372 }
373
374 /**
375 * @brief Configure gpio speed for a dedicated pin on dedicated port.
376 * @note I/O speed can be Low, Medium, Fast or High speed.
377 * @note Warning: only one pin can be passed as parameter.
378 * @note Refer to datasheet for frequency specifications and the power
379 * supply and load conditions for each speed.
380 * @rmtoll OSPEEDR OSPEEDy LL_GPIO_SetPinSpeed
381 * @param GPIOx GPIO Port
382 * @param Pin This parameter can be one of the following values:
383 * @arg @ref LL_GPIO_PIN_0
384 * @arg @ref LL_GPIO_PIN_1
385 * @arg @ref LL_GPIO_PIN_2
386 * @arg @ref LL_GPIO_PIN_3
387 * @arg @ref LL_GPIO_PIN_4
388 * @arg @ref LL_GPIO_PIN_5
389 * @arg @ref LL_GPIO_PIN_6
390 * @arg @ref LL_GPIO_PIN_7
391 * @arg @ref LL_GPIO_PIN_8
392 * @arg @ref LL_GPIO_PIN_9
393 * @arg @ref LL_GPIO_PIN_10
394 * @arg @ref LL_GPIO_PIN_11
395 * @arg @ref LL_GPIO_PIN_12
396 * @arg @ref LL_GPIO_PIN_13
397 * @arg @ref LL_GPIO_PIN_14
398 * @arg @ref LL_GPIO_PIN_15
399 * @param Speed This parameter can be one of the following values:
400 * @arg @ref LL_GPIO_SPEED_FREQ_LOW
401 * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM
402 * @arg @ref LL_GPIO_SPEED_FREQ_HIGH
403 * @retval None
404 */
LL_GPIO_SetPinSpeed(GPIO_TypeDef * GPIOx,uint32_t Pin,uint32_t Speed)405 __STATIC_INLINE void LL_GPIO_SetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Speed)
406 {
407 MODIFY_REG(GPIOx->OSPEEDR, ((Pin * Pin) * GPIO_OSPEEDR_OSPEEDR0), ((Pin * Pin) * Speed));
408 }
409
410 /**
411 * @brief Return gpio speed for a dedicated pin on dedicated port.
412 * @note I/O speed can be Low, Medium, Fast or High speed.
413 * @note Warning: only one pin can be passed as parameter.
414 * @note Refer to datasheet for frequency specifications and the power
415 * supply and load conditions for each speed.
416 * @rmtoll OSPEEDR OSPEEDy LL_GPIO_GetPinSpeed
417 * @param GPIOx GPIO Port
418 * @param Pin This parameter can be one of the following values:
419 * @arg @ref LL_GPIO_PIN_0
420 * @arg @ref LL_GPIO_PIN_1
421 * @arg @ref LL_GPIO_PIN_2
422 * @arg @ref LL_GPIO_PIN_3
423 * @arg @ref LL_GPIO_PIN_4
424 * @arg @ref LL_GPIO_PIN_5
425 * @arg @ref LL_GPIO_PIN_6
426 * @arg @ref LL_GPIO_PIN_7
427 * @arg @ref LL_GPIO_PIN_8
428 * @arg @ref LL_GPIO_PIN_9
429 * @arg @ref LL_GPIO_PIN_10
430 * @arg @ref LL_GPIO_PIN_11
431 * @arg @ref LL_GPIO_PIN_12
432 * @arg @ref LL_GPIO_PIN_13
433 * @arg @ref LL_GPIO_PIN_14
434 * @arg @ref LL_GPIO_PIN_15
435 * @retval Returned value can be one of the following values:
436 * @arg @ref LL_GPIO_SPEED_FREQ_LOW
437 * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM
438 * @arg @ref LL_GPIO_SPEED_FREQ_HIGH
439 */
LL_GPIO_GetPinSpeed(GPIO_TypeDef * GPIOx,uint32_t Pin)440 __STATIC_INLINE uint32_t LL_GPIO_GetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin)
441 {
442 return (uint32_t)(READ_BIT(GPIOx->OSPEEDR, ((Pin * Pin) * GPIO_OSPEEDR_OSPEEDR0)) / (Pin * Pin));
443 }
444
445 /**
446 * @brief Configure gpio pull-up or pull-down for a dedicated pin on a dedicated port.
447 * @note Warning: only one pin can be passed as parameter.
448 * @rmtoll PUPDR PUPDy LL_GPIO_SetPinPull
449 * @param GPIOx GPIO Port
450 * @param Pin This parameter can be one of the following values:
451 * @arg @ref LL_GPIO_PIN_0
452 * @arg @ref LL_GPIO_PIN_1
453 * @arg @ref LL_GPIO_PIN_2
454 * @arg @ref LL_GPIO_PIN_3
455 * @arg @ref LL_GPIO_PIN_4
456 * @arg @ref LL_GPIO_PIN_5
457 * @arg @ref LL_GPIO_PIN_6
458 * @arg @ref LL_GPIO_PIN_7
459 * @arg @ref LL_GPIO_PIN_8
460 * @arg @ref LL_GPIO_PIN_9
461 * @arg @ref LL_GPIO_PIN_10
462 * @arg @ref LL_GPIO_PIN_11
463 * @arg @ref LL_GPIO_PIN_12
464 * @arg @ref LL_GPIO_PIN_13
465 * @arg @ref LL_GPIO_PIN_14
466 * @arg @ref LL_GPIO_PIN_15
467 * @param Pull This parameter can be one of the following values:
468 * @arg @ref LL_GPIO_PULL_NO
469 * @arg @ref LL_GPIO_PULL_UP
470 * @arg @ref LL_GPIO_PULL_DOWN
471 * @retval None
472 */
LL_GPIO_SetPinPull(GPIO_TypeDef * GPIOx,uint32_t Pin,uint32_t Pull)473 __STATIC_INLINE void LL_GPIO_SetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Pull)
474 {
475 MODIFY_REG(GPIOx->PUPDR, ((Pin * Pin) * GPIO_PUPDR_PUPDR0), ((Pin * Pin) * Pull));
476 }
477
478 /**
479 * @brief Return gpio pull-up or pull-down for a dedicated pin on a dedicated port
480 * @note Warning: only one pin can be passed as parameter.
481 * @rmtoll PUPDR PUPDy LL_GPIO_GetPinPull
482 * @param GPIOx GPIO Port
483 * @param Pin This parameter can be one of the following values:
484 * @arg @ref LL_GPIO_PIN_0
485 * @arg @ref LL_GPIO_PIN_1
486 * @arg @ref LL_GPIO_PIN_2
487 * @arg @ref LL_GPIO_PIN_3
488 * @arg @ref LL_GPIO_PIN_4
489 * @arg @ref LL_GPIO_PIN_5
490 * @arg @ref LL_GPIO_PIN_6
491 * @arg @ref LL_GPIO_PIN_7
492 * @arg @ref LL_GPIO_PIN_8
493 * @arg @ref LL_GPIO_PIN_9
494 * @arg @ref LL_GPIO_PIN_10
495 * @arg @ref LL_GPIO_PIN_11
496 * @arg @ref LL_GPIO_PIN_12
497 * @arg @ref LL_GPIO_PIN_13
498 * @arg @ref LL_GPIO_PIN_14
499 * @arg @ref LL_GPIO_PIN_15
500 * @retval Returned value can be one of the following values:
501 * @arg @ref LL_GPIO_PULL_NO
502 * @arg @ref LL_GPIO_PULL_UP
503 * @arg @ref LL_GPIO_PULL_DOWN
504 */
LL_GPIO_GetPinPull(GPIO_TypeDef * GPIOx,uint32_t Pin)505 __STATIC_INLINE uint32_t LL_GPIO_GetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin)
506 {
507 return (uint32_t)(READ_BIT(GPIOx->PUPDR, ((Pin * Pin) * GPIO_PUPDR_PUPDR0)) / (Pin * Pin));
508 }
509
510 /**
511 * @brief Configure gpio alternate function of a dedicated pin from 0 to 7 for a dedicated port.
512 * @note Possible values are from AF0 to AF7 depending on target.
513 * @note Warning: only one pin can be passed as parameter.
514 * @rmtoll AFRL AFSELy LL_GPIO_SetAFPin_0_7
515 * @param GPIOx GPIO Port
516 * @param Pin This parameter can be one of the following values:
517 * @arg @ref LL_GPIO_PIN_0
518 * @arg @ref LL_GPIO_PIN_1
519 * @arg @ref LL_GPIO_PIN_2
520 * @arg @ref LL_GPIO_PIN_3
521 * @arg @ref LL_GPIO_PIN_4
522 * @arg @ref LL_GPIO_PIN_5
523 * @arg @ref LL_GPIO_PIN_6
524 * @arg @ref LL_GPIO_PIN_7
525 * @param Alternate This parameter can be one of the following values:
526 * @arg @ref LL_GPIO_AF_0
527 * @arg @ref LL_GPIO_AF_1
528 * @arg @ref LL_GPIO_AF_2
529 * @arg @ref LL_GPIO_AF_3
530 * @arg @ref LL_GPIO_AF_4
531 * @arg @ref LL_GPIO_AF_5
532 * @arg @ref LL_GPIO_AF_6
533 * @arg @ref LL_GPIO_AF_7
534 * @retval None
535 */
LL_GPIO_SetAFPin_0_7(GPIO_TypeDef * GPIOx,uint32_t Pin,uint32_t Alternate)536 __STATIC_INLINE void LL_GPIO_SetAFPin_0_7(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Alternate)
537 {
538 MODIFY_REG(GPIOx->AFR[0], ((((Pin * Pin) * Pin) * Pin) * GPIO_AFRL_AFSEL0),
539 ((((Pin * Pin) * Pin) * Pin) * Alternate));
540 }
541
542 /**
543 * @brief Return gpio alternate function of a dedicated pin from 0 to 7 for a dedicated port.
544 * @rmtoll AFRL AFSELy LL_GPIO_GetAFPin_0_7
545 * @param GPIOx GPIO Port
546 * @param Pin This parameter can be one of the following values:
547 * @arg @ref LL_GPIO_PIN_0
548 * @arg @ref LL_GPIO_PIN_1
549 * @arg @ref LL_GPIO_PIN_2
550 * @arg @ref LL_GPIO_PIN_3
551 * @arg @ref LL_GPIO_PIN_4
552 * @arg @ref LL_GPIO_PIN_5
553 * @arg @ref LL_GPIO_PIN_6
554 * @arg @ref LL_GPIO_PIN_7
555 * @retval Returned value can be one of the following values:
556 * @arg @ref LL_GPIO_AF_0
557 * @arg @ref LL_GPIO_AF_1
558 * @arg @ref LL_GPIO_AF_2
559 * @arg @ref LL_GPIO_AF_3
560 * @arg @ref LL_GPIO_AF_4
561 * @arg @ref LL_GPIO_AF_5
562 * @arg @ref LL_GPIO_AF_6
563 * @arg @ref LL_GPIO_AF_7
564 */
LL_GPIO_GetAFPin_0_7(GPIO_TypeDef * GPIOx,uint32_t Pin)565 __STATIC_INLINE uint32_t LL_GPIO_GetAFPin_0_7(GPIO_TypeDef *GPIOx, uint32_t Pin)
566 {
567 return (uint32_t)(READ_BIT(GPIOx->AFR[0],
568 ((((Pin * Pin) * Pin) * Pin) * GPIO_AFRL_AFSEL0)) / (((Pin * Pin) * Pin) * Pin));
569 }
570
571 /**
572 * @brief Configure gpio alternate function of a dedicated pin from 8 to 15 for a dedicated port.
573 * @note Possible values are from AF0 to AF7 depending on target.
574 * @note Warning: only one pin can be passed as parameter.
575 * @rmtoll AFRH AFSELy LL_GPIO_SetAFPin_8_15
576 * @param GPIOx GPIO Port
577 * @param Pin This parameter can be one of the following values:
578 * @arg @ref LL_GPIO_PIN_8
579 * @arg @ref LL_GPIO_PIN_9
580 * @arg @ref LL_GPIO_PIN_10
581 * @arg @ref LL_GPIO_PIN_11
582 * @arg @ref LL_GPIO_PIN_12
583 * @arg @ref LL_GPIO_PIN_13
584 * @arg @ref LL_GPIO_PIN_14
585 * @arg @ref LL_GPIO_PIN_15
586 * @param Alternate This parameter can be one of the following values:
587 * @arg @ref LL_GPIO_AF_0
588 * @arg @ref LL_GPIO_AF_1
589 * @arg @ref LL_GPIO_AF_2
590 * @arg @ref LL_GPIO_AF_3
591 * @arg @ref LL_GPIO_AF_4
592 * @arg @ref LL_GPIO_AF_5
593 * @arg @ref LL_GPIO_AF_6
594 * @arg @ref LL_GPIO_AF_7
595 * @retval None
596 */
LL_GPIO_SetAFPin_8_15(GPIO_TypeDef * GPIOx,uint32_t Pin,uint32_t Alternate)597 __STATIC_INLINE void LL_GPIO_SetAFPin_8_15(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Alternate)
598 {
599 MODIFY_REG(GPIOx->AFR[1], (((((Pin >> 8U) * (Pin >> 8U)) * (Pin >> 8U)) * (Pin >> 8U)) * GPIO_AFRH_AFSEL8),
600 (((((Pin >> 8U) * (Pin >> 8U)) * (Pin >> 8U)) * (Pin >> 8U)) * Alternate));
601 }
602
603 /**
604 * @brief Return gpio alternate function of a dedicated pin from 8 to 15 for a dedicated port.
605 * @note Possible values are from AF0 to AF7 depending on target.
606 * @rmtoll AFRH AFSELy LL_GPIO_GetAFPin_8_15
607 * @param GPIOx GPIO Port
608 * @param Pin This parameter can be one of the following values:
609 * @arg @ref LL_GPIO_PIN_8
610 * @arg @ref LL_GPIO_PIN_9
611 * @arg @ref LL_GPIO_PIN_10
612 * @arg @ref LL_GPIO_PIN_11
613 * @arg @ref LL_GPIO_PIN_12
614 * @arg @ref LL_GPIO_PIN_13
615 * @arg @ref LL_GPIO_PIN_14
616 * @arg @ref LL_GPIO_PIN_15
617 * @retval Returned value can be one of the following values:
618 * @arg @ref LL_GPIO_AF_0
619 * @arg @ref LL_GPIO_AF_1
620 * @arg @ref LL_GPIO_AF_2
621 * @arg @ref LL_GPIO_AF_3
622 * @arg @ref LL_GPIO_AF_4
623 * @arg @ref LL_GPIO_AF_5
624 * @arg @ref LL_GPIO_AF_6
625 * @arg @ref LL_GPIO_AF_7
626 */
LL_GPIO_GetAFPin_8_15(GPIO_TypeDef * GPIOx,uint32_t Pin)627 __STATIC_INLINE uint32_t LL_GPIO_GetAFPin_8_15(GPIO_TypeDef *GPIOx, uint32_t Pin)
628 {
629 return (uint32_t)(READ_BIT(GPIOx->AFR[1],
630 (((((Pin >> 8U) * (Pin >> 8U)) * (Pin >> 8U)) * (Pin >> 8U)) * GPIO_AFRH_AFSEL8)) / ((((Pin >> 8U) *
631 (Pin >> 8U)) * (Pin >> 8U)) * (Pin >> 8U)));
632 }
633
634
635 /**
636 * @brief Lock configuration of several pins for a dedicated port.
637 * @note When the lock sequence has been applied on a port bit, the
638 * value of this port bit can no longer be modified until the
639 * next reset.
640 * @note Each lock bit freezes a specific configuration register
641 * (control and alternate function registers).
642 * @rmtoll LCKR LCKK LL_GPIO_LockPin
643 * @param GPIOx GPIO Port
644 * @param PinMask This parameter can be a combination of the following values:
645 * @arg @ref LL_GPIO_PIN_0
646 * @arg @ref LL_GPIO_PIN_1
647 * @arg @ref LL_GPIO_PIN_2
648 * @arg @ref LL_GPIO_PIN_3
649 * @arg @ref LL_GPIO_PIN_4
650 * @arg @ref LL_GPIO_PIN_5
651 * @arg @ref LL_GPIO_PIN_6
652 * @arg @ref LL_GPIO_PIN_7
653 * @arg @ref LL_GPIO_PIN_8
654 * @arg @ref LL_GPIO_PIN_9
655 * @arg @ref LL_GPIO_PIN_10
656 * @arg @ref LL_GPIO_PIN_11
657 * @arg @ref LL_GPIO_PIN_12
658 * @arg @ref LL_GPIO_PIN_13
659 * @arg @ref LL_GPIO_PIN_14
660 * @arg @ref LL_GPIO_PIN_15
661 * @arg @ref LL_GPIO_PIN_ALL
662 * @retval None
663 */
LL_GPIO_LockPin(GPIO_TypeDef * GPIOx,uint32_t PinMask)664 __STATIC_INLINE void LL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint32_t PinMask)
665 {
666 __IO uint32_t temp;
667 WRITE_REG(GPIOx->LCKR, GPIO_LCKR_LCKK | PinMask);
668 WRITE_REG(GPIOx->LCKR, PinMask);
669 WRITE_REG(GPIOx->LCKR, GPIO_LCKR_LCKK | PinMask);
670 temp = READ_REG(GPIOx->LCKR);
671 (void) temp;
672 }
673
674 /**
675 * @brief Return 1 if all pins passed as parameter, of a dedicated port, are locked. else Return 0.
676 * @rmtoll LCKR LCKy LL_GPIO_IsPinLocked
677 * @param GPIOx GPIO Port
678 * @param PinMask This parameter can be a combination of the following values:
679 * @arg @ref LL_GPIO_PIN_0
680 * @arg @ref LL_GPIO_PIN_1
681 * @arg @ref LL_GPIO_PIN_2
682 * @arg @ref LL_GPIO_PIN_3
683 * @arg @ref LL_GPIO_PIN_4
684 * @arg @ref LL_GPIO_PIN_5
685 * @arg @ref LL_GPIO_PIN_6
686 * @arg @ref LL_GPIO_PIN_7
687 * @arg @ref LL_GPIO_PIN_8
688 * @arg @ref LL_GPIO_PIN_9
689 * @arg @ref LL_GPIO_PIN_10
690 * @arg @ref LL_GPIO_PIN_11
691 * @arg @ref LL_GPIO_PIN_12
692 * @arg @ref LL_GPIO_PIN_13
693 * @arg @ref LL_GPIO_PIN_14
694 * @arg @ref LL_GPIO_PIN_15
695 * @arg @ref LL_GPIO_PIN_ALL
696 * @retval State of bit (1 or 0).
697 */
LL_GPIO_IsPinLocked(GPIO_TypeDef * GPIOx,uint32_t PinMask)698 __STATIC_INLINE uint32_t LL_GPIO_IsPinLocked(GPIO_TypeDef *GPIOx, uint32_t PinMask)
699 {
700 return (READ_BIT(GPIOx->LCKR, PinMask) == (PinMask));
701 }
702
703 /**
704 * @brief Return 1 if one of the pin of a dedicated port is locked. else return 0.
705 * @rmtoll LCKR LCKK LL_GPIO_IsAnyPinLocked
706 * @param GPIOx GPIO Port
707 * @retval State of bit (1 or 0).
708 */
LL_GPIO_IsAnyPinLocked(GPIO_TypeDef * GPIOx)709 __STATIC_INLINE uint32_t LL_GPIO_IsAnyPinLocked(GPIO_TypeDef *GPIOx)
710 {
711 return (READ_BIT(GPIOx->LCKR, GPIO_LCKR_LCKK) == (GPIO_LCKR_LCKK));
712 }
713
714 /**
715 * @}
716 */
717
718 /** @defgroup GPIO_LL_EF_Data_Access Data Access
719 * @{
720 */
721
722 /**
723 * @brief Return full input data register value for a dedicated port.
724 * @rmtoll IDR IDy LL_GPIO_ReadInputPort
725 * @param GPIOx GPIO Port
726 * @retval Input data register value of port
727 */
LL_GPIO_ReadInputPort(GPIO_TypeDef * GPIOx)728 __STATIC_INLINE uint32_t LL_GPIO_ReadInputPort(GPIO_TypeDef *GPIOx)
729 {
730 return (uint32_t)(READ_REG(GPIOx->IDR));
731 }
732
733 /**
734 * @brief Return if input data level for several pins of dedicated port is high or low.
735 * @rmtoll IDR IDy LL_GPIO_IsInputPinSet
736 * @param GPIOx GPIO Port
737 * @param PinMask This parameter can be a combination of the following values:
738 * @arg @ref LL_GPIO_PIN_0
739 * @arg @ref LL_GPIO_PIN_1
740 * @arg @ref LL_GPIO_PIN_2
741 * @arg @ref LL_GPIO_PIN_3
742 * @arg @ref LL_GPIO_PIN_4
743 * @arg @ref LL_GPIO_PIN_5
744 * @arg @ref LL_GPIO_PIN_6
745 * @arg @ref LL_GPIO_PIN_7
746 * @arg @ref LL_GPIO_PIN_8
747 * @arg @ref LL_GPIO_PIN_9
748 * @arg @ref LL_GPIO_PIN_10
749 * @arg @ref LL_GPIO_PIN_11
750 * @arg @ref LL_GPIO_PIN_12
751 * @arg @ref LL_GPIO_PIN_13
752 * @arg @ref LL_GPIO_PIN_14
753 * @arg @ref LL_GPIO_PIN_15
754 * @arg @ref LL_GPIO_PIN_ALL
755 * @retval State of bit (1 or 0).
756 */
LL_GPIO_IsInputPinSet(GPIO_TypeDef * GPIOx,uint32_t PinMask)757 __STATIC_INLINE uint32_t LL_GPIO_IsInputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask)
758 {
759 return (READ_BIT(GPIOx->IDR, PinMask) == (PinMask));
760 }
761
762 /**
763 * @brief Write output data register for the port.
764 * @rmtoll ODR ODy LL_GPIO_WriteOutputPort
765 * @param GPIOx GPIO Port
766 * @param PortValue Level value for each pin of the port
767 * @retval None
768 */
LL_GPIO_WriteOutputPort(GPIO_TypeDef * GPIOx,uint32_t PortValue)769 __STATIC_INLINE void LL_GPIO_WriteOutputPort(GPIO_TypeDef *GPIOx, uint32_t PortValue)
770 {
771 WRITE_REG(GPIOx->ODR, PortValue);
772 }
773
774 /**
775 * @brief Return full output data register value for a dedicated port.
776 * @rmtoll ODR ODy LL_GPIO_ReadOutputPort
777 * @param GPIOx GPIO Port
778 * @retval Output data register value of port
779 */
LL_GPIO_ReadOutputPort(GPIO_TypeDef * GPIOx)780 __STATIC_INLINE uint32_t LL_GPIO_ReadOutputPort(GPIO_TypeDef *GPIOx)
781 {
782 return (uint32_t)(READ_REG(GPIOx->ODR));
783 }
784
785 /**
786 * @brief Return if input data level for several pins of dedicated port is high or low.
787 * @rmtoll ODR ODy LL_GPIO_IsOutputPinSet
788 * @param GPIOx GPIO Port
789 * @param PinMask This parameter can be a combination of the following values:
790 * @arg @ref LL_GPIO_PIN_0
791 * @arg @ref LL_GPIO_PIN_1
792 * @arg @ref LL_GPIO_PIN_2
793 * @arg @ref LL_GPIO_PIN_3
794 * @arg @ref LL_GPIO_PIN_4
795 * @arg @ref LL_GPIO_PIN_5
796 * @arg @ref LL_GPIO_PIN_6
797 * @arg @ref LL_GPIO_PIN_7
798 * @arg @ref LL_GPIO_PIN_8
799 * @arg @ref LL_GPIO_PIN_9
800 * @arg @ref LL_GPIO_PIN_10
801 * @arg @ref LL_GPIO_PIN_11
802 * @arg @ref LL_GPIO_PIN_12
803 * @arg @ref LL_GPIO_PIN_13
804 * @arg @ref LL_GPIO_PIN_14
805 * @arg @ref LL_GPIO_PIN_15
806 * @arg @ref LL_GPIO_PIN_ALL
807 * @retval State of bit (1 or 0).
808 */
LL_GPIO_IsOutputPinSet(GPIO_TypeDef * GPIOx,uint32_t PinMask)809 __STATIC_INLINE uint32_t LL_GPIO_IsOutputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask)
810 {
811 return (READ_BIT(GPIOx->ODR, PinMask) == (PinMask));
812 }
813
814 /**
815 * @brief Set several pins to high level on dedicated gpio port.
816 * @rmtoll BSRR BSy LL_GPIO_SetOutputPin
817 * @param GPIOx GPIO Port
818 * @param PinMask This parameter can be a combination of the following values:
819 * @arg @ref LL_GPIO_PIN_0
820 * @arg @ref LL_GPIO_PIN_1
821 * @arg @ref LL_GPIO_PIN_2
822 * @arg @ref LL_GPIO_PIN_3
823 * @arg @ref LL_GPIO_PIN_4
824 * @arg @ref LL_GPIO_PIN_5
825 * @arg @ref LL_GPIO_PIN_6
826 * @arg @ref LL_GPIO_PIN_7
827 * @arg @ref LL_GPIO_PIN_8
828 * @arg @ref LL_GPIO_PIN_9
829 * @arg @ref LL_GPIO_PIN_10
830 * @arg @ref LL_GPIO_PIN_11
831 * @arg @ref LL_GPIO_PIN_12
832 * @arg @ref LL_GPIO_PIN_13
833 * @arg @ref LL_GPIO_PIN_14
834 * @arg @ref LL_GPIO_PIN_15
835 * @arg @ref LL_GPIO_PIN_ALL
836 * @retval None
837 */
LL_GPIO_SetOutputPin(GPIO_TypeDef * GPIOx,uint32_t PinMask)838 __STATIC_INLINE void LL_GPIO_SetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask)
839 {
840 WRITE_REG(GPIOx->BSRR, PinMask);
841 }
842
843 /**
844 * @brief Set several pins to low level on dedicated gpio port.
845 * @rmtoll BRR BRy LL_GPIO_ResetOutputPin
846 * @param GPIOx GPIO Port
847 * @param PinMask This parameter can be a combination of the following values:
848 * @arg @ref LL_GPIO_PIN_0
849 * @arg @ref LL_GPIO_PIN_1
850 * @arg @ref LL_GPIO_PIN_2
851 * @arg @ref LL_GPIO_PIN_3
852 * @arg @ref LL_GPIO_PIN_4
853 * @arg @ref LL_GPIO_PIN_5
854 * @arg @ref LL_GPIO_PIN_6
855 * @arg @ref LL_GPIO_PIN_7
856 * @arg @ref LL_GPIO_PIN_8
857 * @arg @ref LL_GPIO_PIN_9
858 * @arg @ref LL_GPIO_PIN_10
859 * @arg @ref LL_GPIO_PIN_11
860 * @arg @ref LL_GPIO_PIN_12
861 * @arg @ref LL_GPIO_PIN_13
862 * @arg @ref LL_GPIO_PIN_14
863 * @arg @ref LL_GPIO_PIN_15
864 * @arg @ref LL_GPIO_PIN_ALL
865 * @retval None
866 */
LL_GPIO_ResetOutputPin(GPIO_TypeDef * GPIOx,uint32_t PinMask)867 __STATIC_INLINE void LL_GPIO_ResetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask)
868 {
869 WRITE_REG(GPIOx->BRR, PinMask);
870 }
871
872 /**
873 * @brief Toggle data value for several pin of dedicated port.
874 * @rmtoll ODR ODy LL_GPIO_TogglePin
875 * @param GPIOx GPIO Port
876 * @param PinMask This parameter can be a combination of the following values:
877 * @arg @ref LL_GPIO_PIN_0
878 * @arg @ref LL_GPIO_PIN_1
879 * @arg @ref LL_GPIO_PIN_2
880 * @arg @ref LL_GPIO_PIN_3
881 * @arg @ref LL_GPIO_PIN_4
882 * @arg @ref LL_GPIO_PIN_5
883 * @arg @ref LL_GPIO_PIN_6
884 * @arg @ref LL_GPIO_PIN_7
885 * @arg @ref LL_GPIO_PIN_8
886 * @arg @ref LL_GPIO_PIN_9
887 * @arg @ref LL_GPIO_PIN_10
888 * @arg @ref LL_GPIO_PIN_11
889 * @arg @ref LL_GPIO_PIN_12
890 * @arg @ref LL_GPIO_PIN_13
891 * @arg @ref LL_GPIO_PIN_14
892 * @arg @ref LL_GPIO_PIN_15
893 * @arg @ref LL_GPIO_PIN_ALL
894 * @retval None
895 */
LL_GPIO_TogglePin(GPIO_TypeDef * GPIOx,uint32_t PinMask)896 __STATIC_INLINE void LL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint32_t PinMask)
897 {
898 uint32_t odr = READ_REG(GPIOx->ODR);
899 WRITE_REG(GPIOx->BSRR, ((odr & PinMask) << 16u) | (~odr & PinMask));
900 }
901
902 /**
903 * @}
904 */
905
906 #if defined(USE_FULL_LL_DRIVER)
907 /** @defgroup GPIO_LL_EF_Init Initialization and de-initialization functions
908 * @{
909 */
910
911 ErrorStatus LL_GPIO_DeInit(GPIO_TypeDef *GPIOx);
912 ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStruct);
913 void LL_GPIO_StructInit(LL_GPIO_InitTypeDef *GPIO_InitStruct);
914
915 /**
916 * @}
917 */
918 #endif /* USE_FULL_LL_DRIVER */
919
920 /**
921 * @}
922 */
923
924 /**
925 * @}
926 */
927
928 #endif /* defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) */
929 /**
930 * @}
931 */
932
933 #ifdef __cplusplus
934 }
935 #endif
936
937 #endif /* __STM32F0xx_LL_GPIO_H */
938
939