Merge pull request #11198 from SteveCEvans/sce_rc2
[betaflight.git] / lib / main / STM32F4 / Drivers / STM32F4xx_HAL_Driver / Inc / stm32f4xx_ll_gpio.h
blob556cb23ced11f2386b833229eee396e8d3008cd3
1 /**
2 ******************************************************************************
3 * @file stm32f4xx_ll_gpio.h
4 * @author MCD Application Team
5 * @version V1.7.1
6 * @date 14-April-2017
7 * @brief Header file of GPIO LL module.
8 ******************************************************************************
9 * @attention
11 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
13 * Redistribution and use in source and binary forms, with or without modification,
14 * are permitted provided that the following conditions are met:
15 * 1. Redistributions of source code must retain the above copyright notice,
16 * this list of conditions and the following disclaimer.
17 * 2. Redistributions in binary form must reproduce the above copyright notice,
18 * this list of conditions and the following disclaimer in the documentation
19 * and/or other materials provided with the distribution.
20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
21 * may be used to endorse or promote products derived from this software
22 * without specific prior written permission.
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 ******************************************************************************
38 /* Define to prevent recursive inclusion -------------------------------------*/
39 #ifndef __STM32F4xx_LL_GPIO_H
40 #define __STM32F4xx_LL_GPIO_H
42 #ifdef __cplusplus
43 extern "C" {
44 #endif
46 /* Includes ------------------------------------------------------------------*/
47 #include "stm32f4xx.h"
49 /** @addtogroup STM32F4xx_LL_Driver
50 * @{
53 #if defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) || defined (GPIOH) || defined (GPIOI) || defined (GPIOJ) || defined (GPIOK)
55 /** @defgroup GPIO_LL GPIO
56 * @{
59 /* Private types -------------------------------------------------------------*/
60 /* Private variables ---------------------------------------------------------*/
61 /* Private constants ---------------------------------------------------------*/
62 /* Private macros ------------------------------------------------------------*/
63 #if defined(USE_FULL_LL_DRIVER)
64 /** @defgroup GPIO_LL_Private_Macros GPIO Private Macros
65 * @{
68 /**
69 * @}
71 #endif /*USE_FULL_LL_DRIVER*/
73 /* Exported types ------------------------------------------------------------*/
74 #if defined(USE_FULL_LL_DRIVER)
75 /** @defgroup GPIO_LL_ES_INIT GPIO Exported Init structures
76 * @{
79 /**
80 * @brief LL GPIO Init Structure definition
82 typedef struct
84 uint32_t Pin; /*!< Specifies the GPIO pins to be configured.
85 This parameter can be any value of @ref GPIO_LL_EC_PIN */
87 uint32_t Mode; /*!< Specifies the operating mode for the selected pins.
88 This parameter can be a value of @ref GPIO_LL_EC_MODE.
90 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinMode().*/
92 uint32_t Speed; /*!< Specifies the speed for the selected pins.
93 This parameter can be a value of @ref GPIO_LL_EC_SPEED.
95 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinSpeed().*/
97 uint32_t OutputType; /*!< Specifies the operating output type for the selected pins.
98 This parameter can be a value of @ref GPIO_LL_EC_OUTPUT.
100 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinOutputType().*/
102 uint32_t Pull; /*!< Specifies the operating Pull-up/Pull down for the selected pins.
103 This parameter can be a value of @ref GPIO_LL_EC_PULL.
105 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinPull().*/
107 uint32_t Alternate; /*!< Specifies the Peripheral to be connected to the selected pins.
108 This parameter can be a value of @ref GPIO_LL_EC_AF.
110 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetAFPin_0_7() and LL_GPIO_SetAFPin_8_15().*/
111 } LL_GPIO_InitTypeDef;
114 * @}
116 #endif /* USE_FULL_LL_DRIVER */
118 /* Exported constants --------------------------------------------------------*/
119 /** @defgroup GPIO_LL_Exported_Constants GPIO Exported Constants
120 * @{
123 /** @defgroup GPIO_LL_EC_PIN PIN
124 * @{
126 #define LL_GPIO_PIN_0 GPIO_BSRR_BS_0 /*!< Select pin 0 */
127 #define LL_GPIO_PIN_1 GPIO_BSRR_BS_1 /*!< Select pin 1 */
128 #define LL_GPIO_PIN_2 GPIO_BSRR_BS_2 /*!< Select pin 2 */
129 #define LL_GPIO_PIN_3 GPIO_BSRR_BS_3 /*!< Select pin 3 */
130 #define LL_GPIO_PIN_4 GPIO_BSRR_BS_4 /*!< Select pin 4 */
131 #define LL_GPIO_PIN_5 GPIO_BSRR_BS_5 /*!< Select pin 5 */
132 #define LL_GPIO_PIN_6 GPIO_BSRR_BS_6 /*!< Select pin 6 */
133 #define LL_GPIO_PIN_7 GPIO_BSRR_BS_7 /*!< Select pin 7 */
134 #define LL_GPIO_PIN_8 GPIO_BSRR_BS_8 /*!< Select pin 8 */
135 #define LL_GPIO_PIN_9 GPIO_BSRR_BS_9 /*!< Select pin 9 */
136 #define LL_GPIO_PIN_10 GPIO_BSRR_BS_10 /*!< Select pin 10 */
137 #define LL_GPIO_PIN_11 GPIO_BSRR_BS_11 /*!< Select pin 11 */
138 #define LL_GPIO_PIN_12 GPIO_BSRR_BS_12 /*!< Select pin 12 */
139 #define LL_GPIO_PIN_13 GPIO_BSRR_BS_13 /*!< Select pin 13 */
140 #define LL_GPIO_PIN_14 GPIO_BSRR_BS_14 /*!< Select pin 14 */
141 #define LL_GPIO_PIN_15 GPIO_BSRR_BS_15 /*!< Select pin 15 */
142 #define LL_GPIO_PIN_ALL (GPIO_BSRR_BS_0 | GPIO_BSRR_BS_1 | GPIO_BSRR_BS_2 | \
143 GPIO_BSRR_BS_3 | GPIO_BSRR_BS_4 | GPIO_BSRR_BS_5 | \
144 GPIO_BSRR_BS_6 | GPIO_BSRR_BS_7 | GPIO_BSRR_BS_8 | \
145 GPIO_BSRR_BS_9 | GPIO_BSRR_BS_10 | GPIO_BSRR_BS_11 | \
146 GPIO_BSRR_BS_12 | GPIO_BSRR_BS_13 | GPIO_BSRR_BS_14 | \
147 GPIO_BSRR_BS_15) /*!< Select all pins */
149 * @}
152 /** @defgroup GPIO_LL_EC_MODE Mode
153 * @{
155 #define LL_GPIO_MODE_INPUT (0x00000000U) /*!< Select input mode */
156 #define LL_GPIO_MODE_OUTPUT GPIO_MODER_MODER0_0 /*!< Select output mode */
157 #define LL_GPIO_MODE_ALTERNATE GPIO_MODER_MODER0_1 /*!< Select alternate function mode */
158 #define LL_GPIO_MODE_ANALOG GPIO_MODER_MODER0 /*!< Select analog mode */
160 * @}
163 /** @defgroup GPIO_LL_EC_OUTPUT Output Type
164 * @{
166 #define LL_GPIO_OUTPUT_PUSHPULL (0x00000000U) /*!< Select push-pull as output type */
167 #define LL_GPIO_OUTPUT_OPENDRAIN GPIO_OTYPER_OT_0 /*!< Select open-drain as output type */
169 * @}
172 /** @defgroup GPIO_LL_EC_SPEED Output Speed
173 * @{
175 #define LL_GPIO_SPEED_FREQ_LOW (0x00000000U) /*!< Select I/O low output speed */
176 #define LL_GPIO_SPEED_FREQ_MEDIUM GPIO_OSPEEDER_OSPEEDR0_0 /*!< Select I/O medium output speed */
177 #define LL_GPIO_SPEED_FREQ_HIGH GPIO_OSPEEDER_OSPEEDR0_1 /*!< Select I/O fast output speed */
178 #define LL_GPIO_SPEED_FREQ_VERY_HIGH GPIO_OSPEEDER_OSPEEDR0 /*!< Select I/O high output speed */
180 * @}
183 /** @defgroup GPIO_LL_EC_PULL Pull Up Pull Down
184 * @{
186 #define LL_GPIO_PULL_NO (0x00000000U) /*!< Select I/O no pull */
187 #define LL_GPIO_PULL_UP GPIO_PUPDR_PUPDR0_0 /*!< Select I/O pull up */
188 #define LL_GPIO_PULL_DOWN GPIO_PUPDR_PUPDR0_1 /*!< Select I/O pull down */
190 * @}
193 /** @defgroup GPIO_LL_EC_AF Alternate Function
194 * @{
196 #define LL_GPIO_AF_0 (0x0000000U) /*!< Select alternate function 0 */
197 #define LL_GPIO_AF_1 (0x0000001U) /*!< Select alternate function 1 */
198 #define LL_GPIO_AF_2 (0x0000002U) /*!< Select alternate function 2 */
199 #define LL_GPIO_AF_3 (0x0000003U) /*!< Select alternate function 3 */
200 #define LL_GPIO_AF_4 (0x0000004U) /*!< Select alternate function 4 */
201 #define LL_GPIO_AF_5 (0x0000005U) /*!< Select alternate function 5 */
202 #define LL_GPIO_AF_6 (0x0000006U) /*!< Select alternate function 6 */
203 #define LL_GPIO_AF_7 (0x0000007U) /*!< Select alternate function 7 */
204 #define LL_GPIO_AF_8 (0x0000008U) /*!< Select alternate function 8 */
205 #define LL_GPIO_AF_9 (0x0000009U) /*!< Select alternate function 9 */
206 #define LL_GPIO_AF_10 (0x000000AU) /*!< Select alternate function 10 */
207 #define LL_GPIO_AF_11 (0x000000BU) /*!< Select alternate function 11 */
208 #define LL_GPIO_AF_12 (0x000000CU) /*!< Select alternate function 12 */
209 #define LL_GPIO_AF_13 (0x000000DU) /*!< Select alternate function 13 */
210 #define LL_GPIO_AF_14 (0x000000EU) /*!< Select alternate function 14 */
211 #define LL_GPIO_AF_15 (0x000000FU) /*!< Select alternate function 15 */
213 * @}
217 * @}
220 /* Exported macro ------------------------------------------------------------*/
221 /** @defgroup GPIO_LL_Exported_Macros GPIO Exported Macros
222 * @{
225 /** @defgroup GPIO_LL_EM_WRITE_READ Common Write and read registers Macros
226 * @{
230 * @brief Write a value in GPIO register
231 * @param __INSTANCE__ GPIO Instance
232 * @param __REG__ Register to be written
233 * @param __VALUE__ Value to be written in the register
234 * @retval None
236 #define LL_GPIO_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
239 * @brief Read a value in GPIO register
240 * @param __INSTANCE__ GPIO Instance
241 * @param __REG__ Register to be read
242 * @retval Register value
244 #define LL_GPIO_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
246 * @}
250 * @}
253 /* Exported functions --------------------------------------------------------*/
254 /** @defgroup GPIO_LL_Exported_Functions GPIO Exported Functions
255 * @{
258 /** @defgroup GPIO_LL_EF_Port_Configuration Port Configuration
259 * @{
263 * @brief Configure gpio mode for a dedicated pin on dedicated port.
264 * @note I/O mode can be Input mode, General purpose output, Alternate function mode or Analog.
265 * @note Warning: only one pin can be passed as parameter.
266 * @rmtoll MODER MODEy LL_GPIO_SetPinMode
267 * @param GPIOx GPIO Port
268 * @param Pin This parameter can be one of the following values:
269 * @arg @ref LL_GPIO_PIN_0
270 * @arg @ref LL_GPIO_PIN_1
271 * @arg @ref LL_GPIO_PIN_2
272 * @arg @ref LL_GPIO_PIN_3
273 * @arg @ref LL_GPIO_PIN_4
274 * @arg @ref LL_GPIO_PIN_5
275 * @arg @ref LL_GPIO_PIN_6
276 * @arg @ref LL_GPIO_PIN_7
277 * @arg @ref LL_GPIO_PIN_8
278 * @arg @ref LL_GPIO_PIN_9
279 * @arg @ref LL_GPIO_PIN_10
280 * @arg @ref LL_GPIO_PIN_11
281 * @arg @ref LL_GPIO_PIN_12
282 * @arg @ref LL_GPIO_PIN_13
283 * @arg @ref LL_GPIO_PIN_14
284 * @arg @ref LL_GPIO_PIN_15
285 * @param Mode This parameter can be one of the following values:
286 * @arg @ref LL_GPIO_MODE_INPUT
287 * @arg @ref LL_GPIO_MODE_OUTPUT
288 * @arg @ref LL_GPIO_MODE_ALTERNATE
289 * @arg @ref LL_GPIO_MODE_ANALOG
290 * @retval None
292 __STATIC_INLINE void LL_GPIO_SetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Mode)
294 MODIFY_REG(GPIOx->MODER, (GPIO_MODER_MODER0 << (POSITION_VAL(Pin) * 2U)), (Mode << (POSITION_VAL(Pin) * 2U)));
298 * @brief Return gpio mode for a dedicated pin on dedicated port.
299 * @note I/O mode can be Input mode, General purpose output, Alternate function mode or Analog.
300 * @note Warning: only one pin can be passed as parameter.
301 * @rmtoll MODER MODEy LL_GPIO_GetPinMode
302 * @param GPIOx GPIO Port
303 * @param Pin This parameter can be one of the following values:
304 * @arg @ref LL_GPIO_PIN_0
305 * @arg @ref LL_GPIO_PIN_1
306 * @arg @ref LL_GPIO_PIN_2
307 * @arg @ref LL_GPIO_PIN_3
308 * @arg @ref LL_GPIO_PIN_4
309 * @arg @ref LL_GPIO_PIN_5
310 * @arg @ref LL_GPIO_PIN_6
311 * @arg @ref LL_GPIO_PIN_7
312 * @arg @ref LL_GPIO_PIN_8
313 * @arg @ref LL_GPIO_PIN_9
314 * @arg @ref LL_GPIO_PIN_10
315 * @arg @ref LL_GPIO_PIN_11
316 * @arg @ref LL_GPIO_PIN_12
317 * @arg @ref LL_GPIO_PIN_13
318 * @arg @ref LL_GPIO_PIN_14
319 * @arg @ref LL_GPIO_PIN_15
320 * @retval Returned value can be one of the following values:
321 * @arg @ref LL_GPIO_MODE_INPUT
322 * @arg @ref LL_GPIO_MODE_OUTPUT
323 * @arg @ref LL_GPIO_MODE_ALTERNATE
324 * @arg @ref LL_GPIO_MODE_ANALOG
326 __STATIC_INLINE uint32_t LL_GPIO_GetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin)
328 return (uint32_t)(READ_BIT(GPIOx->MODER,
329 (GPIO_MODER_MODER0 << (POSITION_VAL(Pin) * 2U))) >> (POSITION_VAL(Pin) * 2U));
333 * @brief Configure gpio output type for several pins on dedicated port.
334 * @note Output type as to be set when gpio pin is in output or
335 * alternate modes. Possible type are Push-pull or Open-drain.
336 * @rmtoll OTYPER OTy LL_GPIO_SetPinOutputType
337 * @param GPIOx GPIO Port
338 * @param PinMask This parameter can be a combination of the following values:
339 * @arg @ref LL_GPIO_PIN_0
340 * @arg @ref LL_GPIO_PIN_1
341 * @arg @ref LL_GPIO_PIN_2
342 * @arg @ref LL_GPIO_PIN_3
343 * @arg @ref LL_GPIO_PIN_4
344 * @arg @ref LL_GPIO_PIN_5
345 * @arg @ref LL_GPIO_PIN_6
346 * @arg @ref LL_GPIO_PIN_7
347 * @arg @ref LL_GPIO_PIN_8
348 * @arg @ref LL_GPIO_PIN_9
349 * @arg @ref LL_GPIO_PIN_10
350 * @arg @ref LL_GPIO_PIN_11
351 * @arg @ref LL_GPIO_PIN_12
352 * @arg @ref LL_GPIO_PIN_13
353 * @arg @ref LL_GPIO_PIN_14
354 * @arg @ref LL_GPIO_PIN_15
355 * @arg @ref LL_GPIO_PIN_ALL
356 * @param OutputType This parameter can be one of the following values:
357 * @arg @ref LL_GPIO_OUTPUT_PUSHPULL
358 * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN
359 * @retval None
361 __STATIC_INLINE void LL_GPIO_SetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t PinMask, uint32_t OutputType)
363 MODIFY_REG(GPIOx->OTYPER, PinMask, (PinMask * OutputType));
367 * @brief Return gpio output type for several pins on dedicated port.
368 * @note Output type as to be set when gpio pin is in output or
369 * alternate modes. Possible type are Push-pull or Open-drain.
370 * @note Warning: only one pin can be passed as parameter.
371 * @rmtoll OTYPER OTy LL_GPIO_GetPinOutputType
372 * @param GPIOx GPIO Port
373 * @param Pin This parameter can be one of the following values:
374 * @arg @ref LL_GPIO_PIN_0
375 * @arg @ref LL_GPIO_PIN_1
376 * @arg @ref LL_GPIO_PIN_2
377 * @arg @ref LL_GPIO_PIN_3
378 * @arg @ref LL_GPIO_PIN_4
379 * @arg @ref LL_GPIO_PIN_5
380 * @arg @ref LL_GPIO_PIN_6
381 * @arg @ref LL_GPIO_PIN_7
382 * @arg @ref LL_GPIO_PIN_8
383 * @arg @ref LL_GPIO_PIN_9
384 * @arg @ref LL_GPIO_PIN_10
385 * @arg @ref LL_GPIO_PIN_11
386 * @arg @ref LL_GPIO_PIN_12
387 * @arg @ref LL_GPIO_PIN_13
388 * @arg @ref LL_GPIO_PIN_14
389 * @arg @ref LL_GPIO_PIN_15
390 * @arg @ref LL_GPIO_PIN_ALL
391 * @retval Returned value can be one of the following values:
392 * @arg @ref LL_GPIO_OUTPUT_PUSHPULL
393 * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN
395 __STATIC_INLINE uint32_t LL_GPIO_GetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t Pin)
397 return (uint32_t)(READ_BIT(GPIOx->OTYPER, Pin) >> POSITION_VAL(Pin));
401 * @brief Configure gpio speed for a dedicated pin on dedicated port.
402 * @note I/O speed can be Low, Medium, Fast or High speed.
403 * @note Warning: only one pin can be passed as parameter.
404 * @note Refer to datasheet for frequency specifications and the power
405 * supply and load conditions for each speed.
406 * @rmtoll OSPEEDR OSPEEDy LL_GPIO_SetPinSpeed
407 * @param GPIOx GPIO Port
408 * @param Pin This parameter can be one of the following values:
409 * @arg @ref LL_GPIO_PIN_0
410 * @arg @ref LL_GPIO_PIN_1
411 * @arg @ref LL_GPIO_PIN_2
412 * @arg @ref LL_GPIO_PIN_3
413 * @arg @ref LL_GPIO_PIN_4
414 * @arg @ref LL_GPIO_PIN_5
415 * @arg @ref LL_GPIO_PIN_6
416 * @arg @ref LL_GPIO_PIN_7
417 * @arg @ref LL_GPIO_PIN_8
418 * @arg @ref LL_GPIO_PIN_9
419 * @arg @ref LL_GPIO_PIN_10
420 * @arg @ref LL_GPIO_PIN_11
421 * @arg @ref LL_GPIO_PIN_12
422 * @arg @ref LL_GPIO_PIN_13
423 * @arg @ref LL_GPIO_PIN_14
424 * @arg @ref LL_GPIO_PIN_15
425 * @param Speed This parameter can be one of the following values:
426 * @arg @ref LL_GPIO_SPEED_FREQ_LOW
427 * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM
428 * @arg @ref LL_GPIO_SPEED_FREQ_HIGH
429 * @arg @ref LL_GPIO_SPEED_FREQ_VERY_HIGH
430 * @retval None
432 __STATIC_INLINE void LL_GPIO_SetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Speed)
434 MODIFY_REG(GPIOx->OSPEEDR, (GPIO_OSPEEDER_OSPEEDR0 << (POSITION_VAL(Pin) * 2U)),
435 (Speed << (POSITION_VAL(Pin) * 2U)));
439 * @brief Return gpio speed for a dedicated pin on dedicated port.
440 * @note I/O speed can be Low, Medium, Fast or High speed.
441 * @note Warning: only one pin can be passed as parameter.
442 * @note Refer to datasheet for frequency specifications and the power
443 * supply and load conditions for each speed.
444 * @rmtoll OSPEEDR OSPEEDy LL_GPIO_GetPinSpeed
445 * @param GPIOx GPIO Port
446 * @param Pin This parameter can be one of the following values:
447 * @arg @ref LL_GPIO_PIN_0
448 * @arg @ref LL_GPIO_PIN_1
449 * @arg @ref LL_GPIO_PIN_2
450 * @arg @ref LL_GPIO_PIN_3
451 * @arg @ref LL_GPIO_PIN_4
452 * @arg @ref LL_GPIO_PIN_5
453 * @arg @ref LL_GPIO_PIN_6
454 * @arg @ref LL_GPIO_PIN_7
455 * @arg @ref LL_GPIO_PIN_8
456 * @arg @ref LL_GPIO_PIN_9
457 * @arg @ref LL_GPIO_PIN_10
458 * @arg @ref LL_GPIO_PIN_11
459 * @arg @ref LL_GPIO_PIN_12
460 * @arg @ref LL_GPIO_PIN_13
461 * @arg @ref LL_GPIO_PIN_14
462 * @arg @ref LL_GPIO_PIN_15
463 * @retval Returned value can be one of the following values:
464 * @arg @ref LL_GPIO_SPEED_FREQ_LOW
465 * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM
466 * @arg @ref LL_GPIO_SPEED_FREQ_HIGH
467 * @arg @ref LL_GPIO_SPEED_FREQ_VERY_HIGH
469 __STATIC_INLINE uint32_t LL_GPIO_GetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin)
471 return (uint32_t)(READ_BIT(GPIOx->OSPEEDR,
472 (GPIO_OSPEEDER_OSPEEDR0 << (POSITION_VAL(Pin) * 2U))) >> (POSITION_VAL(Pin) * 2U));
476 * @brief Configure gpio pull-up or pull-down for a dedicated pin on a dedicated port.
477 * @note Warning: only one pin can be passed as parameter.
478 * @rmtoll PUPDR PUPDy LL_GPIO_SetPinPull
479 * @param GPIOx GPIO Port
480 * @param Pin This parameter can be one of the following values:
481 * @arg @ref LL_GPIO_PIN_0
482 * @arg @ref LL_GPIO_PIN_1
483 * @arg @ref LL_GPIO_PIN_2
484 * @arg @ref LL_GPIO_PIN_3
485 * @arg @ref LL_GPIO_PIN_4
486 * @arg @ref LL_GPIO_PIN_5
487 * @arg @ref LL_GPIO_PIN_6
488 * @arg @ref LL_GPIO_PIN_7
489 * @arg @ref LL_GPIO_PIN_8
490 * @arg @ref LL_GPIO_PIN_9
491 * @arg @ref LL_GPIO_PIN_10
492 * @arg @ref LL_GPIO_PIN_11
493 * @arg @ref LL_GPIO_PIN_12
494 * @arg @ref LL_GPIO_PIN_13
495 * @arg @ref LL_GPIO_PIN_14
496 * @arg @ref LL_GPIO_PIN_15
497 * @param Pull This parameter can be one of the following values:
498 * @arg @ref LL_GPIO_PULL_NO
499 * @arg @ref LL_GPIO_PULL_UP
500 * @arg @ref LL_GPIO_PULL_DOWN
501 * @retval None
503 __STATIC_INLINE void LL_GPIO_SetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Pull)
505 MODIFY_REG(GPIOx->PUPDR, (GPIO_PUPDR_PUPDR0 << (POSITION_VAL(Pin) * 2U)), (Pull << (POSITION_VAL(Pin) * 2U)));
509 * @brief Return gpio pull-up or pull-down for a dedicated pin on a dedicated port
510 * @note Warning: only one pin can be passed as parameter.
511 * @rmtoll PUPDR PUPDy LL_GPIO_GetPinPull
512 * @param GPIOx GPIO Port
513 * @param Pin This parameter can be one of the following values:
514 * @arg @ref LL_GPIO_PIN_0
515 * @arg @ref LL_GPIO_PIN_1
516 * @arg @ref LL_GPIO_PIN_2
517 * @arg @ref LL_GPIO_PIN_3
518 * @arg @ref LL_GPIO_PIN_4
519 * @arg @ref LL_GPIO_PIN_5
520 * @arg @ref LL_GPIO_PIN_6
521 * @arg @ref LL_GPIO_PIN_7
522 * @arg @ref LL_GPIO_PIN_8
523 * @arg @ref LL_GPIO_PIN_9
524 * @arg @ref LL_GPIO_PIN_10
525 * @arg @ref LL_GPIO_PIN_11
526 * @arg @ref LL_GPIO_PIN_12
527 * @arg @ref LL_GPIO_PIN_13
528 * @arg @ref LL_GPIO_PIN_14
529 * @arg @ref LL_GPIO_PIN_15
530 * @retval Returned value can be one of the following values:
531 * @arg @ref LL_GPIO_PULL_NO
532 * @arg @ref LL_GPIO_PULL_UP
533 * @arg @ref LL_GPIO_PULL_DOWN
535 __STATIC_INLINE uint32_t LL_GPIO_GetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin)
537 return (uint32_t)(READ_BIT(GPIOx->PUPDR,
538 (GPIO_PUPDR_PUPDR0 << (POSITION_VAL(Pin) * 2U))) >> (POSITION_VAL(Pin) * 2U));
542 * @brief Configure gpio alternate function of a dedicated pin from 0 to 7 for a dedicated port.
543 * @note Possible values are from AF0 to AF15 depending on target.
544 * @note Warning: only one pin can be passed as parameter.
545 * @rmtoll AFRL AFSELy LL_GPIO_SetAFPin_0_7
546 * @param GPIOx GPIO Port
547 * @param Pin This parameter can be one of the following values:
548 * @arg @ref LL_GPIO_PIN_0
549 * @arg @ref LL_GPIO_PIN_1
550 * @arg @ref LL_GPIO_PIN_2
551 * @arg @ref LL_GPIO_PIN_3
552 * @arg @ref LL_GPIO_PIN_4
553 * @arg @ref LL_GPIO_PIN_5
554 * @arg @ref LL_GPIO_PIN_6
555 * @arg @ref LL_GPIO_PIN_7
556 * @param Alternate This parameter can be one of the following values:
557 * @arg @ref LL_GPIO_AF_0
558 * @arg @ref LL_GPIO_AF_1
559 * @arg @ref LL_GPIO_AF_2
560 * @arg @ref LL_GPIO_AF_3
561 * @arg @ref LL_GPIO_AF_4
562 * @arg @ref LL_GPIO_AF_5
563 * @arg @ref LL_GPIO_AF_6
564 * @arg @ref LL_GPIO_AF_7
565 * @arg @ref LL_GPIO_AF_8
566 * @arg @ref LL_GPIO_AF_9
567 * @arg @ref LL_GPIO_AF_10
568 * @arg @ref LL_GPIO_AF_11
569 * @arg @ref LL_GPIO_AF_12
570 * @arg @ref LL_GPIO_AF_13
571 * @arg @ref LL_GPIO_AF_14
572 * @arg @ref LL_GPIO_AF_15
573 * @retval None
575 __STATIC_INLINE void LL_GPIO_SetAFPin_0_7(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Alternate)
577 MODIFY_REG(GPIOx->AFR[0], (GPIO_AFRL_AFSEL0 << (POSITION_VAL(Pin) * 4U)),
578 (Alternate << (POSITION_VAL(Pin) * 4U)));
582 * @brief Return gpio alternate function of a dedicated pin from 0 to 7 for a dedicated port.
583 * @rmtoll AFRL AFSELy LL_GPIO_GetAFPin_0_7
584 * @param GPIOx GPIO Port
585 * @param Pin This parameter can be one of the following values:
586 * @arg @ref LL_GPIO_PIN_0
587 * @arg @ref LL_GPIO_PIN_1
588 * @arg @ref LL_GPIO_PIN_2
589 * @arg @ref LL_GPIO_PIN_3
590 * @arg @ref LL_GPIO_PIN_4
591 * @arg @ref LL_GPIO_PIN_5
592 * @arg @ref LL_GPIO_PIN_6
593 * @arg @ref LL_GPIO_PIN_7
594 * @retval Returned value can be one of the following values:
595 * @arg @ref LL_GPIO_AF_0
596 * @arg @ref LL_GPIO_AF_1
597 * @arg @ref LL_GPIO_AF_2
598 * @arg @ref LL_GPIO_AF_3
599 * @arg @ref LL_GPIO_AF_4
600 * @arg @ref LL_GPIO_AF_5
601 * @arg @ref LL_GPIO_AF_6
602 * @arg @ref LL_GPIO_AF_7
603 * @arg @ref LL_GPIO_AF_8
604 * @arg @ref LL_GPIO_AF_9
605 * @arg @ref LL_GPIO_AF_10
606 * @arg @ref LL_GPIO_AF_11
607 * @arg @ref LL_GPIO_AF_12
608 * @arg @ref LL_GPIO_AF_13
609 * @arg @ref LL_GPIO_AF_14
610 * @arg @ref LL_GPIO_AF_15
612 __STATIC_INLINE uint32_t LL_GPIO_GetAFPin_0_7(GPIO_TypeDef *GPIOx, uint32_t Pin)
614 return (uint32_t)(READ_BIT(GPIOx->AFR[0],
615 (GPIO_AFRL_AFSEL0 << (POSITION_VAL(Pin) * 4U))) >> (POSITION_VAL(Pin) * 4U));
619 * @brief Configure gpio alternate function of a dedicated pin from 8 to 15 for a dedicated port.
620 * @note Possible values are from AF0 to AF15 depending on target.
621 * @note Warning: only one pin can be passed as parameter.
622 * @rmtoll AFRH AFSELy LL_GPIO_SetAFPin_8_15
623 * @param GPIOx GPIO Port
624 * @param Pin This parameter can be one of the following values:
625 * @arg @ref LL_GPIO_PIN_8
626 * @arg @ref LL_GPIO_PIN_9
627 * @arg @ref LL_GPIO_PIN_10
628 * @arg @ref LL_GPIO_PIN_11
629 * @arg @ref LL_GPIO_PIN_12
630 * @arg @ref LL_GPIO_PIN_13
631 * @arg @ref LL_GPIO_PIN_14
632 * @arg @ref LL_GPIO_PIN_15
633 * @param Alternate This parameter can be one of the following values:
634 * @arg @ref LL_GPIO_AF_0
635 * @arg @ref LL_GPIO_AF_1
636 * @arg @ref LL_GPIO_AF_2
637 * @arg @ref LL_GPIO_AF_3
638 * @arg @ref LL_GPIO_AF_4
639 * @arg @ref LL_GPIO_AF_5
640 * @arg @ref LL_GPIO_AF_6
641 * @arg @ref LL_GPIO_AF_7
642 * @arg @ref LL_GPIO_AF_8
643 * @arg @ref LL_GPIO_AF_9
644 * @arg @ref LL_GPIO_AF_10
645 * @arg @ref LL_GPIO_AF_11
646 * @arg @ref LL_GPIO_AF_12
647 * @arg @ref LL_GPIO_AF_13
648 * @arg @ref LL_GPIO_AF_14
649 * @arg @ref LL_GPIO_AF_15
650 * @retval None
652 __STATIC_INLINE void LL_GPIO_SetAFPin_8_15(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Alternate)
654 MODIFY_REG(GPIOx->AFR[1], (GPIO_AFRH_AFSEL8 << (POSITION_VAL(Pin >> 8U) * 4U)),
655 (Alternate << (POSITION_VAL(Pin >> 8U) * 4U)));
659 * @brief Return gpio alternate function of a dedicated pin from 8 to 15 for a dedicated port.
660 * @note Possible values are from AF0 to AF15 depending on target.
661 * @rmtoll AFRH AFSELy LL_GPIO_GetAFPin_8_15
662 * @param GPIOx GPIO Port
663 * @param Pin This parameter can be one of the following values:
664 * @arg @ref LL_GPIO_PIN_8
665 * @arg @ref LL_GPIO_PIN_9
666 * @arg @ref LL_GPIO_PIN_10
667 * @arg @ref LL_GPIO_PIN_11
668 * @arg @ref LL_GPIO_PIN_12
669 * @arg @ref LL_GPIO_PIN_13
670 * @arg @ref LL_GPIO_PIN_14
671 * @arg @ref LL_GPIO_PIN_15
672 * @retval Returned value can be one of the following values:
673 * @arg @ref LL_GPIO_AF_0
674 * @arg @ref LL_GPIO_AF_1
675 * @arg @ref LL_GPIO_AF_2
676 * @arg @ref LL_GPIO_AF_3
677 * @arg @ref LL_GPIO_AF_4
678 * @arg @ref LL_GPIO_AF_5
679 * @arg @ref LL_GPIO_AF_6
680 * @arg @ref LL_GPIO_AF_7
681 * @arg @ref LL_GPIO_AF_8
682 * @arg @ref LL_GPIO_AF_9
683 * @arg @ref LL_GPIO_AF_10
684 * @arg @ref LL_GPIO_AF_11
685 * @arg @ref LL_GPIO_AF_12
686 * @arg @ref LL_GPIO_AF_13
687 * @arg @ref LL_GPIO_AF_14
688 * @arg @ref LL_GPIO_AF_15
690 __STATIC_INLINE uint32_t LL_GPIO_GetAFPin_8_15(GPIO_TypeDef *GPIOx, uint32_t Pin)
692 return (uint32_t)(READ_BIT(GPIOx->AFR[1],
693 (GPIO_AFRH_AFSEL8 << (POSITION_VAL(Pin >> 8U) * 4U))) >> (POSITION_VAL(Pin >> 8U) * 4U));
698 * @brief Lock configuration of several pins for a dedicated port.
699 * @note When the lock sequence has been applied on a port bit, the
700 * value of this port bit can no longer be modified until the
701 * next reset.
702 * @note Each lock bit freezes a specific configuration register
703 * (control and alternate function registers).
704 * @rmtoll LCKR LCKK LL_GPIO_LockPin
705 * @param GPIOx GPIO Port
706 * @param PinMask This parameter can be a combination of the following values:
707 * @arg @ref LL_GPIO_PIN_0
708 * @arg @ref LL_GPIO_PIN_1
709 * @arg @ref LL_GPIO_PIN_2
710 * @arg @ref LL_GPIO_PIN_3
711 * @arg @ref LL_GPIO_PIN_4
712 * @arg @ref LL_GPIO_PIN_5
713 * @arg @ref LL_GPIO_PIN_6
714 * @arg @ref LL_GPIO_PIN_7
715 * @arg @ref LL_GPIO_PIN_8
716 * @arg @ref LL_GPIO_PIN_9
717 * @arg @ref LL_GPIO_PIN_10
718 * @arg @ref LL_GPIO_PIN_11
719 * @arg @ref LL_GPIO_PIN_12
720 * @arg @ref LL_GPIO_PIN_13
721 * @arg @ref LL_GPIO_PIN_14
722 * @arg @ref LL_GPIO_PIN_15
723 * @arg @ref LL_GPIO_PIN_ALL
724 * @retval None
726 __STATIC_INLINE void LL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint32_t PinMask)
728 __IO uint32_t temp;
729 WRITE_REG(GPIOx->LCKR, GPIO_LCKR_LCKK | PinMask);
730 WRITE_REG(GPIOx->LCKR, PinMask);
731 WRITE_REG(GPIOx->LCKR, GPIO_LCKR_LCKK | PinMask);
732 temp = READ_REG(GPIOx->LCKR);
733 (void) temp;
737 * @brief Return 1 if all pins passed as parameter, of a dedicated port, are locked. else Return 0.
738 * @rmtoll LCKR LCKy LL_GPIO_IsPinLocked
739 * @param GPIOx GPIO Port
740 * @param PinMask This parameter can be a combination of the following values:
741 * @arg @ref LL_GPIO_PIN_0
742 * @arg @ref LL_GPIO_PIN_1
743 * @arg @ref LL_GPIO_PIN_2
744 * @arg @ref LL_GPIO_PIN_3
745 * @arg @ref LL_GPIO_PIN_4
746 * @arg @ref LL_GPIO_PIN_5
747 * @arg @ref LL_GPIO_PIN_6
748 * @arg @ref LL_GPIO_PIN_7
749 * @arg @ref LL_GPIO_PIN_8
750 * @arg @ref LL_GPIO_PIN_9
751 * @arg @ref LL_GPIO_PIN_10
752 * @arg @ref LL_GPIO_PIN_11
753 * @arg @ref LL_GPIO_PIN_12
754 * @arg @ref LL_GPIO_PIN_13
755 * @arg @ref LL_GPIO_PIN_14
756 * @arg @ref LL_GPIO_PIN_15
757 * @arg @ref LL_GPIO_PIN_ALL
758 * @retval State of bit (1 or 0).
760 __STATIC_INLINE uint32_t LL_GPIO_IsPinLocked(GPIO_TypeDef *GPIOx, uint32_t PinMask)
762 return (READ_BIT(GPIOx->LCKR, PinMask) == (PinMask));
766 * @brief Return 1 if one of the pin of a dedicated port is locked. else return 0.
767 * @rmtoll LCKR LCKK LL_GPIO_IsAnyPinLocked
768 * @param GPIOx GPIO Port
769 * @retval State of bit (1 or 0).
771 __STATIC_INLINE uint32_t LL_GPIO_IsAnyPinLocked(GPIO_TypeDef *GPIOx)
773 return (READ_BIT(GPIOx->LCKR, GPIO_LCKR_LCKK) == (GPIO_LCKR_LCKK));
777 * @}
780 /** @defgroup GPIO_LL_EF_Data_Access Data Access
781 * @{
785 * @brief Return full input data register value for a dedicated port.
786 * @rmtoll IDR IDy LL_GPIO_ReadInputPort
787 * @param GPIOx GPIO Port
788 * @retval Input data register value of port
790 __STATIC_INLINE uint32_t LL_GPIO_ReadInputPort(GPIO_TypeDef *GPIOx)
792 return (uint32_t)(READ_REG(GPIOx->IDR));
796 * @brief Return if input data level for several pins of dedicated port is high or low.
797 * @rmtoll IDR IDy LL_GPIO_IsInputPinSet
798 * @param GPIOx GPIO Port
799 * @param PinMask This parameter can be a combination of the following values:
800 * @arg @ref LL_GPIO_PIN_0
801 * @arg @ref LL_GPIO_PIN_1
802 * @arg @ref LL_GPIO_PIN_2
803 * @arg @ref LL_GPIO_PIN_3
804 * @arg @ref LL_GPIO_PIN_4
805 * @arg @ref LL_GPIO_PIN_5
806 * @arg @ref LL_GPIO_PIN_6
807 * @arg @ref LL_GPIO_PIN_7
808 * @arg @ref LL_GPIO_PIN_8
809 * @arg @ref LL_GPIO_PIN_9
810 * @arg @ref LL_GPIO_PIN_10
811 * @arg @ref LL_GPIO_PIN_11
812 * @arg @ref LL_GPIO_PIN_12
813 * @arg @ref LL_GPIO_PIN_13
814 * @arg @ref LL_GPIO_PIN_14
815 * @arg @ref LL_GPIO_PIN_15
816 * @arg @ref LL_GPIO_PIN_ALL
817 * @retval State of bit (1 or 0).
819 __STATIC_INLINE uint32_t LL_GPIO_IsInputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask)
821 return (READ_BIT(GPIOx->IDR, PinMask) == (PinMask));
825 * @brief Write output data register for the port.
826 * @rmtoll ODR ODy LL_GPIO_WriteOutputPort
827 * @param GPIOx GPIO Port
828 * @param PortValue Level value for each pin of the port
829 * @retval None
831 __STATIC_INLINE void LL_GPIO_WriteOutputPort(GPIO_TypeDef *GPIOx, uint32_t PortValue)
833 WRITE_REG(GPIOx->ODR, PortValue);
837 * @brief Return full output data register value for a dedicated port.
838 * @rmtoll ODR ODy LL_GPIO_ReadOutputPort
839 * @param GPIOx GPIO Port
840 * @retval Output data register value of port
842 __STATIC_INLINE uint32_t LL_GPIO_ReadOutputPort(GPIO_TypeDef *GPIOx)
844 return (uint32_t)(READ_REG(GPIOx->ODR));
848 * @brief Return if input data level for several pins of dedicated port is high or low.
849 * @rmtoll ODR ODy LL_GPIO_IsOutputPinSet
850 * @param GPIOx GPIO Port
851 * @param PinMask This parameter can be a combination of the following values:
852 * @arg @ref LL_GPIO_PIN_0
853 * @arg @ref LL_GPIO_PIN_1
854 * @arg @ref LL_GPIO_PIN_2
855 * @arg @ref LL_GPIO_PIN_3
856 * @arg @ref LL_GPIO_PIN_4
857 * @arg @ref LL_GPIO_PIN_5
858 * @arg @ref LL_GPIO_PIN_6
859 * @arg @ref LL_GPIO_PIN_7
860 * @arg @ref LL_GPIO_PIN_8
861 * @arg @ref LL_GPIO_PIN_9
862 * @arg @ref LL_GPIO_PIN_10
863 * @arg @ref LL_GPIO_PIN_11
864 * @arg @ref LL_GPIO_PIN_12
865 * @arg @ref LL_GPIO_PIN_13
866 * @arg @ref LL_GPIO_PIN_14
867 * @arg @ref LL_GPIO_PIN_15
868 * @arg @ref LL_GPIO_PIN_ALL
869 * @retval State of bit (1 or 0).
871 __STATIC_INLINE uint32_t LL_GPIO_IsOutputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask)
873 return (READ_BIT(GPIOx->ODR, PinMask) == (PinMask));
877 * @brief Set several pins to high level on dedicated gpio port.
878 * @rmtoll BSRR BSy LL_GPIO_SetOutputPin
879 * @param GPIOx GPIO Port
880 * @param PinMask This parameter can be a combination of the following values:
881 * @arg @ref LL_GPIO_PIN_0
882 * @arg @ref LL_GPIO_PIN_1
883 * @arg @ref LL_GPIO_PIN_2
884 * @arg @ref LL_GPIO_PIN_3
885 * @arg @ref LL_GPIO_PIN_4
886 * @arg @ref LL_GPIO_PIN_5
887 * @arg @ref LL_GPIO_PIN_6
888 * @arg @ref LL_GPIO_PIN_7
889 * @arg @ref LL_GPIO_PIN_8
890 * @arg @ref LL_GPIO_PIN_9
891 * @arg @ref LL_GPIO_PIN_10
892 * @arg @ref LL_GPIO_PIN_11
893 * @arg @ref LL_GPIO_PIN_12
894 * @arg @ref LL_GPIO_PIN_13
895 * @arg @ref LL_GPIO_PIN_14
896 * @arg @ref LL_GPIO_PIN_15
897 * @arg @ref LL_GPIO_PIN_ALL
898 * @retval None
900 __STATIC_INLINE void LL_GPIO_SetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask)
902 WRITE_REG(GPIOx->BSRR, PinMask);
906 * @brief Set several pins to low level on dedicated gpio port.
907 * @rmtoll BSRR BRy LL_GPIO_ResetOutputPin
908 * @param GPIOx GPIO Port
909 * @param PinMask This parameter can be a combination of the following values:
910 * @arg @ref LL_GPIO_PIN_0
911 * @arg @ref LL_GPIO_PIN_1
912 * @arg @ref LL_GPIO_PIN_2
913 * @arg @ref LL_GPIO_PIN_3
914 * @arg @ref LL_GPIO_PIN_4
915 * @arg @ref LL_GPIO_PIN_5
916 * @arg @ref LL_GPIO_PIN_6
917 * @arg @ref LL_GPIO_PIN_7
918 * @arg @ref LL_GPIO_PIN_8
919 * @arg @ref LL_GPIO_PIN_9
920 * @arg @ref LL_GPIO_PIN_10
921 * @arg @ref LL_GPIO_PIN_11
922 * @arg @ref LL_GPIO_PIN_12
923 * @arg @ref LL_GPIO_PIN_13
924 * @arg @ref LL_GPIO_PIN_14
925 * @arg @ref LL_GPIO_PIN_15
926 * @arg @ref LL_GPIO_PIN_ALL
927 * @retval None
929 __STATIC_INLINE void LL_GPIO_ResetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask)
931 WRITE_REG(GPIOx->BSRR, (PinMask << 16));
935 * @brief Toggle data value for several pin of dedicated port.
936 * @rmtoll ODR ODy LL_GPIO_TogglePin
937 * @param GPIOx GPIO Port
938 * @param PinMask This parameter can be a combination of the following values:
939 * @arg @ref LL_GPIO_PIN_0
940 * @arg @ref LL_GPIO_PIN_1
941 * @arg @ref LL_GPIO_PIN_2
942 * @arg @ref LL_GPIO_PIN_3
943 * @arg @ref LL_GPIO_PIN_4
944 * @arg @ref LL_GPIO_PIN_5
945 * @arg @ref LL_GPIO_PIN_6
946 * @arg @ref LL_GPIO_PIN_7
947 * @arg @ref LL_GPIO_PIN_8
948 * @arg @ref LL_GPIO_PIN_9
949 * @arg @ref LL_GPIO_PIN_10
950 * @arg @ref LL_GPIO_PIN_11
951 * @arg @ref LL_GPIO_PIN_12
952 * @arg @ref LL_GPIO_PIN_13
953 * @arg @ref LL_GPIO_PIN_14
954 * @arg @ref LL_GPIO_PIN_15
955 * @arg @ref LL_GPIO_PIN_ALL
956 * @retval None
958 __STATIC_INLINE void LL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint32_t PinMask)
960 WRITE_REG(GPIOx->ODR, READ_REG(GPIOx->ODR) ^ PinMask);
964 * @}
967 #if defined(USE_FULL_LL_DRIVER)
968 /** @defgroup GPIO_LL_EF_Init Initialization and de-initialization functions
969 * @{
972 ErrorStatus LL_GPIO_DeInit(GPIO_TypeDef *GPIOx);
973 ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStruct);
974 void LL_GPIO_StructInit(LL_GPIO_InitTypeDef *GPIO_InitStruct);
977 * @}
979 #endif /* USE_FULL_LL_DRIVER */
982 * @}
986 * @}
989 #endif /* defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) || defined (GPIOH) || defined (GPIOI) || defined (GPIOJ) || defined (GPIOK) */
991 * @}
994 #ifdef __cplusplus
996 #endif
998 #endif /* __STM32F4xx_LL_GPIO_H */
1000 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/