STM32H735xx HAL User Manual
|
00001 /** 00002 ****************************************************************************** 00003 * @file stm32h7xx_ll_gpio.h 00004 * @author MCD Application Team 00005 * @brief Header file of GPIO LL module. 00006 ****************************************************************************** 00007 * @attention 00008 * 00009 * Copyright (c) 2017 STMicroelectronics. 00010 * All rights reserved. 00011 * 00012 * This software is licensed under terms that can be found in the LICENSE file 00013 * in the root directory of this software component. 00014 * If no LICENSE file comes with this software, it is provided AS-IS. 00015 * 00016 ****************************************************************************** 00017 */ 00018 00019 /* Define to prevent recursive inclusion -------------------------------------*/ 00020 #ifndef STM32H7xx_LL_GPIO_H 00021 #define STM32H7xx_LL_GPIO_H 00022 00023 #ifdef __cplusplus 00024 extern "C" { 00025 #endif 00026 00027 /* Includes ------------------------------------------------------------------*/ 00028 #include "stm32h7xx.h" 00029 00030 /** @addtogroup STM32H7xx_LL_Driver 00031 * @{ 00032 */ 00033 00034 #if defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) || defined (GPIOH) || defined (GPIOI) || defined (GPIOJ) || defined (GPIOK) 00035 00036 /** @defgroup GPIO_LL GPIO 00037 * @{ 00038 */ 00039 00040 /* Private types -------------------------------------------------------------*/ 00041 /* Private variables ---------------------------------------------------------*/ 00042 /* Private constants ---------------------------------------------------------*/ 00043 /* Private macros ------------------------------------------------------------*/ 00044 #if defined(USE_FULL_LL_DRIVER) 00045 /** @defgroup GPIO_LL_Private_Macros GPIO Private Macros 00046 * @{ 00047 */ 00048 00049 /** 00050 * @} 00051 */ 00052 #endif /*USE_FULL_LL_DRIVER*/ 00053 00054 /* Exported types ------------------------------------------------------------*/ 00055 #if defined(USE_FULL_LL_DRIVER) 00056 /** @defgroup GPIO_LL_ES_INIT GPIO Exported Init structures 00057 * @{ 00058 */ 00059 00060 /** 00061 * @brief LL GPIO Init Structure definition 00062 */ 00063 typedef struct 00064 { 00065 uint32_t Pin; /*!< Specifies the GPIO pins to be configured. 00066 This parameter can be any value of @ref GPIO_LL_EC_PIN */ 00067 00068 uint32_t Mode; /*!< Specifies the operating mode for the selected pins. 00069 This parameter can be a value of @ref GPIO_LL_EC_MODE. 00070 00071 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinMode().*/ 00072 00073 uint32_t Speed; /*!< Specifies the speed for the selected pins. 00074 This parameter can be a value of @ref GPIO_LL_EC_SPEED. 00075 00076 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinSpeed().*/ 00077 00078 uint32_t OutputType; /*!< Specifies the operating output type for the selected pins. 00079 This parameter can be a value of @ref GPIO_LL_EC_OUTPUT. 00080 00081 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinOutputType().*/ 00082 00083 uint32_t Pull; /*!< Specifies the operating Pull-up/Pull down for the selected pins. 00084 This parameter can be a value of @ref GPIO_LL_EC_PULL. 00085 00086 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinPull().*/ 00087 00088 uint32_t Alternate; /*!< Specifies the Peripheral to be connected to the selected pins. 00089 This parameter can be a value of @ref GPIO_LL_EC_AF. 00090 00091 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetAFPin_0_7() and LL_GPIO_SetAFPin_8_15().*/ 00092 } LL_GPIO_InitTypeDef; 00093 00094 /** 00095 * @} 00096 */ 00097 #endif /* USE_FULL_LL_DRIVER */ 00098 00099 /* Exported constants --------------------------------------------------------*/ 00100 /** @defgroup GPIO_LL_Exported_Constants GPIO Exported Constants 00101 * @{ 00102 */ 00103 00104 /** @defgroup GPIO_LL_EC_PIN PIN 00105 * @{ 00106 */ 00107 #define LL_GPIO_PIN_0 GPIO_BSRR_BS0 /*!< Select pin 0 */ 00108 #define LL_GPIO_PIN_1 GPIO_BSRR_BS1 /*!< Select pin 1 */ 00109 #define LL_GPIO_PIN_2 GPIO_BSRR_BS2 /*!< Select pin 2 */ 00110 #define LL_GPIO_PIN_3 GPIO_BSRR_BS3 /*!< Select pin 3 */ 00111 #define LL_GPIO_PIN_4 GPIO_BSRR_BS4 /*!< Select pin 4 */ 00112 #define LL_GPIO_PIN_5 GPIO_BSRR_BS5 /*!< Select pin 5 */ 00113 #define LL_GPIO_PIN_6 GPIO_BSRR_BS6 /*!< Select pin 6 */ 00114 #define LL_GPIO_PIN_7 GPIO_BSRR_BS7 /*!< Select pin 7 */ 00115 #define LL_GPIO_PIN_8 GPIO_BSRR_BS8 /*!< Select pin 8 */ 00116 #define LL_GPIO_PIN_9 GPIO_BSRR_BS9 /*!< Select pin 9 */ 00117 #define LL_GPIO_PIN_10 GPIO_BSRR_BS10 /*!< Select pin 10 */ 00118 #define LL_GPIO_PIN_11 GPIO_BSRR_BS11 /*!< Select pin 11 */ 00119 #define LL_GPIO_PIN_12 GPIO_BSRR_BS12 /*!< Select pin 12 */ 00120 #define LL_GPIO_PIN_13 GPIO_BSRR_BS13 /*!< Select pin 13 */ 00121 #define LL_GPIO_PIN_14 GPIO_BSRR_BS14 /*!< Select pin 14 */ 00122 #define LL_GPIO_PIN_15 GPIO_BSRR_BS15 /*!< Select pin 15 */ 00123 #define LL_GPIO_PIN_ALL (GPIO_BSRR_BS0 | GPIO_BSRR_BS1 | GPIO_BSRR_BS2 | \ 00124 GPIO_BSRR_BS3 | GPIO_BSRR_BS4 | GPIO_BSRR_BS5 | \ 00125 GPIO_BSRR_BS6 | GPIO_BSRR_BS7 | GPIO_BSRR_BS8 | \ 00126 GPIO_BSRR_BS9 | GPIO_BSRR_BS10 | GPIO_BSRR_BS11 | \ 00127 GPIO_BSRR_BS12 | GPIO_BSRR_BS13 | GPIO_BSRR_BS14 | \ 00128 GPIO_BSRR_BS15) /*!< Select all pins */ 00129 /** 00130 * @} 00131 */ 00132 00133 /** @defgroup GPIO_LL_EC_MODE Mode 00134 * @{ 00135 */ 00136 #define LL_GPIO_MODE_INPUT (0x00000000U) /*!< Select input mode */ 00137 #define LL_GPIO_MODE_OUTPUT GPIO_MODER_MODE0_0 /*!< Select output mode */ 00138 #define LL_GPIO_MODE_ALTERNATE GPIO_MODER_MODE0_1 /*!< Select alternate function mode */ 00139 #define LL_GPIO_MODE_ANALOG GPIO_MODER_MODE0 /*!< Select analog mode */ 00140 /** 00141 * @} 00142 */ 00143 00144 /** @defgroup GPIO_LL_EC_OUTPUT Output Type 00145 * @{ 00146 */ 00147 #define LL_GPIO_OUTPUT_PUSHPULL (0x00000000U) /*!< Select push-pull as output type */ 00148 #define LL_GPIO_OUTPUT_OPENDRAIN GPIO_OTYPER_OT0 /*!< Select open-drain as output type */ 00149 /** 00150 * @} 00151 */ 00152 00153 /** @defgroup GPIO_LL_EC_SPEED Output Speed 00154 * @{ 00155 */ 00156 #define LL_GPIO_SPEED_FREQ_LOW (0x00000000U) /*!< Select I/O low output speed */ 00157 #define LL_GPIO_SPEED_FREQ_MEDIUM GPIO_OSPEEDR_OSPEED0_0 /*!< Select I/O medium output speed */ 00158 #define LL_GPIO_SPEED_FREQ_HIGH GPIO_OSPEEDR_OSPEED0_1 /*!< Select I/O fast output speed */ 00159 #define LL_GPIO_SPEED_FREQ_VERY_HIGH GPIO_OSPEEDR_OSPEED0 /*!< Select I/O high output speed */ 00160 /** 00161 * @} 00162 */ 00163 #define LL_GPIO_SPEED_LOW LL_GPIO_SPEED_FREQ_LOW 00164 #define LL_GPIO_SPEED_MEDIUM LL_GPIO_SPEED_FREQ_MEDIUM 00165 #define LL_GPIO_SPEED_FAST LL_GPIO_SPEED_FREQ_HIGH 00166 #define LL_GPIO_SPEED_HIGH LL_GPIO_SPEED_FREQ_VERY_HIGH 00167 00168 00169 /** @defgroup GPIO_LL_EC_PULL Pull Up Pull Down 00170 * @{ 00171 */ 00172 #define LL_GPIO_PULL_NO (0x00000000U) /*!< Select I/O no pull */ 00173 #define LL_GPIO_PULL_UP GPIO_PUPDR_PUPD0_0 /*!< Select I/O pull up */ 00174 #define LL_GPIO_PULL_DOWN GPIO_PUPDR_PUPD0_1 /*!< Select I/O pull down */ 00175 /** 00176 * @} 00177 */ 00178 00179 /** @defgroup GPIO_LL_EC_AF Alternate Function 00180 * @{ 00181 */ 00182 #define LL_GPIO_AF_0 (0x0000000U) /*!< Select alternate function 0 */ 00183 #define LL_GPIO_AF_1 (0x0000001U) /*!< Select alternate function 1 */ 00184 #define LL_GPIO_AF_2 (0x0000002U) /*!< Select alternate function 2 */ 00185 #define LL_GPIO_AF_3 (0x0000003U) /*!< Select alternate function 3 */ 00186 #define LL_GPIO_AF_4 (0x0000004U) /*!< Select alternate function 4 */ 00187 #define LL_GPIO_AF_5 (0x0000005U) /*!< Select alternate function 5 */ 00188 #define LL_GPIO_AF_6 (0x0000006U) /*!< Select alternate function 6 */ 00189 #define LL_GPIO_AF_7 (0x0000007U) /*!< Select alternate function 7 */ 00190 #define LL_GPIO_AF_8 (0x0000008U) /*!< Select alternate function 8 */ 00191 #define LL_GPIO_AF_9 (0x0000009U) /*!< Select alternate function 9 */ 00192 #define LL_GPIO_AF_10 (0x000000AU) /*!< Select alternate function 10 */ 00193 #define LL_GPIO_AF_11 (0x000000BU) /*!< Select alternate function 11 */ 00194 #define LL_GPIO_AF_12 (0x000000CU) /*!< Select alternate function 12 */ 00195 #define LL_GPIO_AF_13 (0x000000DU) /*!< Select alternate function 13 */ 00196 #define LL_GPIO_AF_14 (0x000000EU) /*!< Select alternate function 14 */ 00197 #define LL_GPIO_AF_15 (0x000000FU) /*!< Select alternate function 15 */ 00198 /** 00199 * @} 00200 */ 00201 00202 /** 00203 * @} 00204 */ 00205 00206 /* Exported macro ------------------------------------------------------------*/ 00207 /** @defgroup GPIO_LL_Exported_Macros GPIO Exported Macros 00208 * @{ 00209 */ 00210 00211 /** @defgroup GPIO_LL_EM_WRITE_READ Common Write and read registers Macros 00212 * @{ 00213 */ 00214 00215 /** 00216 * @brief Write a value in GPIO register 00217 * @param __INSTANCE__ GPIO Instance 00218 * @param __REG__ Register to be written 00219 * @param __VALUE__ Value to be written in the register 00220 * @retval None 00221 */ 00222 #define LL_GPIO_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) 00223 00224 /** 00225 * @brief Read a value in GPIO register 00226 * @param __INSTANCE__ GPIO Instance 00227 * @param __REG__ Register to be read 00228 * @retval Register value 00229 */ 00230 #define LL_GPIO_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) 00231 /** 00232 * @} 00233 */ 00234 00235 /** 00236 * @} 00237 */ 00238 00239 /* Exported functions --------------------------------------------------------*/ 00240 /** @defgroup GPIO_LL_Exported_Functions GPIO Exported Functions 00241 * @{ 00242 */ 00243 00244 /** @defgroup GPIO_LL_EF_Port_Configuration Port Configuration 00245 * @{ 00246 */ 00247 00248 /** 00249 * @brief Configure gpio mode for a dedicated pin on dedicated port. 00250 * @note I/O mode can be Input mode, General purpose output, Alternate function mode or Analog. 00251 * @note Warning: only one pin can be passed as parameter. 00252 * @rmtoll MODER MODEy LL_GPIO_SetPinMode 00253 * @param GPIOx GPIO Port 00254 * @param Pin This parameter can be one of the following values: 00255 * @arg @ref LL_GPIO_PIN_0 00256 * @arg @ref LL_GPIO_PIN_1 00257 * @arg @ref LL_GPIO_PIN_2 00258 * @arg @ref LL_GPIO_PIN_3 00259 * @arg @ref LL_GPIO_PIN_4 00260 * @arg @ref LL_GPIO_PIN_5 00261 * @arg @ref LL_GPIO_PIN_6 00262 * @arg @ref LL_GPIO_PIN_7 00263 * @arg @ref LL_GPIO_PIN_8 00264 * @arg @ref LL_GPIO_PIN_9 00265 * @arg @ref LL_GPIO_PIN_10 00266 * @arg @ref LL_GPIO_PIN_11 00267 * @arg @ref LL_GPIO_PIN_12 00268 * @arg @ref LL_GPIO_PIN_13 00269 * @arg @ref LL_GPIO_PIN_14 00270 * @arg @ref LL_GPIO_PIN_15 00271 * @param Mode This parameter can be one of the following values: 00272 * @arg @ref LL_GPIO_MODE_INPUT 00273 * @arg @ref LL_GPIO_MODE_OUTPUT 00274 * @arg @ref LL_GPIO_MODE_ALTERNATE 00275 * @arg @ref LL_GPIO_MODE_ANALOG 00276 * @retval None 00277 */ 00278 __STATIC_INLINE void LL_GPIO_SetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Mode) 00279 { 00280 MODIFY_REG(GPIOx->MODER, ((Pin * Pin) * GPIO_MODER_MODE0), ((Pin * Pin) * Mode)); 00281 } 00282 00283 /** 00284 * @brief Return gpio mode for a dedicated pin on dedicated port. 00285 * @note I/O mode can be Input mode, General purpose output, Alternate function mode or Analog. 00286 * @note Warning: only one pin can be passed as parameter. 00287 * @rmtoll MODER MODEy LL_GPIO_GetPinMode 00288 * @param GPIOx GPIO Port 00289 * @param Pin This parameter can be one of the following values: 00290 * @arg @ref LL_GPIO_PIN_0 00291 * @arg @ref LL_GPIO_PIN_1 00292 * @arg @ref LL_GPIO_PIN_2 00293 * @arg @ref LL_GPIO_PIN_3 00294 * @arg @ref LL_GPIO_PIN_4 00295 * @arg @ref LL_GPIO_PIN_5 00296 * @arg @ref LL_GPIO_PIN_6 00297 * @arg @ref LL_GPIO_PIN_7 00298 * @arg @ref LL_GPIO_PIN_8 00299 * @arg @ref LL_GPIO_PIN_9 00300 * @arg @ref LL_GPIO_PIN_10 00301 * @arg @ref LL_GPIO_PIN_11 00302 * @arg @ref LL_GPIO_PIN_12 00303 * @arg @ref LL_GPIO_PIN_13 00304 * @arg @ref LL_GPIO_PIN_14 00305 * @arg @ref LL_GPIO_PIN_15 00306 * @retval Returned value can be one of the following values: 00307 * @arg @ref LL_GPIO_MODE_INPUT 00308 * @arg @ref LL_GPIO_MODE_OUTPUT 00309 * @arg @ref LL_GPIO_MODE_ALTERNATE 00310 * @arg @ref LL_GPIO_MODE_ANALOG 00311 */ 00312 __STATIC_INLINE uint32_t LL_GPIO_GetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin) 00313 { 00314 return (uint32_t)(READ_BIT(GPIOx->MODER, ((Pin * Pin) * GPIO_MODER_MODE0)) / (Pin * Pin)); 00315 } 00316 00317 /** 00318 * @brief Configure gpio output type for several pins on dedicated port. 00319 * @note Output type as to be set when gpio pin is in output or 00320 * alternate modes. Possible type are Push-pull or Open-drain. 00321 * @rmtoll OTYPER OTy LL_GPIO_SetPinOutputType 00322 * @param GPIOx GPIO Port 00323 * @param PinMask This parameter can be a combination of the following values: 00324 * @arg @ref LL_GPIO_PIN_0 00325 * @arg @ref LL_GPIO_PIN_1 00326 * @arg @ref LL_GPIO_PIN_2 00327 * @arg @ref LL_GPIO_PIN_3 00328 * @arg @ref LL_GPIO_PIN_4 00329 * @arg @ref LL_GPIO_PIN_5 00330 * @arg @ref LL_GPIO_PIN_6 00331 * @arg @ref LL_GPIO_PIN_7 00332 * @arg @ref LL_GPIO_PIN_8 00333 * @arg @ref LL_GPIO_PIN_9 00334 * @arg @ref LL_GPIO_PIN_10 00335 * @arg @ref LL_GPIO_PIN_11 00336 * @arg @ref LL_GPIO_PIN_12 00337 * @arg @ref LL_GPIO_PIN_13 00338 * @arg @ref LL_GPIO_PIN_14 00339 * @arg @ref LL_GPIO_PIN_15 00340 * @arg @ref LL_GPIO_PIN_ALL 00341 * @param OutputType This parameter can be one of the following values: 00342 * @arg @ref LL_GPIO_OUTPUT_PUSHPULL 00343 * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN 00344 * @retval None 00345 */ 00346 __STATIC_INLINE void LL_GPIO_SetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t PinMask, uint32_t OutputType) 00347 { 00348 MODIFY_REG(GPIOx->OTYPER, PinMask, (PinMask * OutputType)); 00349 } 00350 00351 /** 00352 * @brief Return gpio output type for several pins on dedicated port. 00353 * @note Output type as to be set when gpio pin is in output or 00354 * alternate modes. Possible type are Push-pull or Open-drain. 00355 * @note Warning: only one pin can be passed as parameter. 00356 * @rmtoll OTYPER OTy LL_GPIO_GetPinOutputType 00357 * @param GPIOx GPIO Port 00358 * @param Pin This parameter can be one of the following values: 00359 * @arg @ref LL_GPIO_PIN_0 00360 * @arg @ref LL_GPIO_PIN_1 00361 * @arg @ref LL_GPIO_PIN_2 00362 * @arg @ref LL_GPIO_PIN_3 00363 * @arg @ref LL_GPIO_PIN_4 00364 * @arg @ref LL_GPIO_PIN_5 00365 * @arg @ref LL_GPIO_PIN_6 00366 * @arg @ref LL_GPIO_PIN_7 00367 * @arg @ref LL_GPIO_PIN_8 00368 * @arg @ref LL_GPIO_PIN_9 00369 * @arg @ref LL_GPIO_PIN_10 00370 * @arg @ref LL_GPIO_PIN_11 00371 * @arg @ref LL_GPIO_PIN_12 00372 * @arg @ref LL_GPIO_PIN_13 00373 * @arg @ref LL_GPIO_PIN_14 00374 * @arg @ref LL_GPIO_PIN_15 00375 * @arg @ref LL_GPIO_PIN_ALL 00376 * @retval Returned value can be one of the following values: 00377 * @arg @ref LL_GPIO_OUTPUT_PUSHPULL 00378 * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN 00379 */ 00380 __STATIC_INLINE uint32_t LL_GPIO_GetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t Pin) 00381 { 00382 return (uint32_t)(READ_BIT(GPIOx->OTYPER, Pin) / Pin); 00383 } 00384 00385 /** 00386 * @brief Configure gpio speed for a dedicated pin on dedicated port. 00387 * @note I/O speed can be Low, Medium, Fast or High speed. 00388 * @note Warning: only one pin can be passed as parameter. 00389 * @note Refer to datasheet for frequency specifications and the power 00390 * supply and load conditions for each speed. 00391 * @rmtoll OSPEEDR OSPEEDy LL_GPIO_SetPinSpeed 00392 * @param GPIOx GPIO Port 00393 * @param Pin This parameter can be one of the following values: 00394 * @arg @ref LL_GPIO_PIN_0 00395 * @arg @ref LL_GPIO_PIN_1 00396 * @arg @ref LL_GPIO_PIN_2 00397 * @arg @ref LL_GPIO_PIN_3 00398 * @arg @ref LL_GPIO_PIN_4 00399 * @arg @ref LL_GPIO_PIN_5 00400 * @arg @ref LL_GPIO_PIN_6 00401 * @arg @ref LL_GPIO_PIN_7 00402 * @arg @ref LL_GPIO_PIN_8 00403 * @arg @ref LL_GPIO_PIN_9 00404 * @arg @ref LL_GPIO_PIN_10 00405 * @arg @ref LL_GPIO_PIN_11 00406 * @arg @ref LL_GPIO_PIN_12 00407 * @arg @ref LL_GPIO_PIN_13 00408 * @arg @ref LL_GPIO_PIN_14 00409 * @arg @ref LL_GPIO_PIN_15 00410 * @param Speed This parameter can be one of the following values: 00411 * @arg @ref LL_GPIO_SPEED_FREQ_LOW 00412 * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM 00413 * @arg @ref LL_GPIO_SPEED_FREQ_HIGH 00414 * @arg @ref LL_GPIO_SPEED_FREQ_VERY_HIGH 00415 * @retval None 00416 */ 00417 __STATIC_INLINE void LL_GPIO_SetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Speed) 00418 { 00419 MODIFY_REG(GPIOx->OSPEEDR, ((Pin * Pin) * GPIO_OSPEEDR_OSPEED0), ((Pin * Pin) * Speed)); 00420 } 00421 00422 /** 00423 * @brief Return gpio speed for a dedicated pin on dedicated port. 00424 * @note I/O speed can be Low, Medium, Fast or High speed. 00425 * @note Warning: only one pin can be passed as parameter. 00426 * @note Refer to datasheet for frequency specifications and the power 00427 * supply and load conditions for each speed. 00428 * @rmtoll OSPEEDR OSPEEDy LL_GPIO_GetPinSpeed 00429 * @param GPIOx GPIO Port 00430 * @param Pin This parameter can be one of the following values: 00431 * @arg @ref LL_GPIO_PIN_0 00432 * @arg @ref LL_GPIO_PIN_1 00433 * @arg @ref LL_GPIO_PIN_2 00434 * @arg @ref LL_GPIO_PIN_3 00435 * @arg @ref LL_GPIO_PIN_4 00436 * @arg @ref LL_GPIO_PIN_5 00437 * @arg @ref LL_GPIO_PIN_6 00438 * @arg @ref LL_GPIO_PIN_7 00439 * @arg @ref LL_GPIO_PIN_8 00440 * @arg @ref LL_GPIO_PIN_9 00441 * @arg @ref LL_GPIO_PIN_10 00442 * @arg @ref LL_GPIO_PIN_11 00443 * @arg @ref LL_GPIO_PIN_12 00444 * @arg @ref LL_GPIO_PIN_13 00445 * @arg @ref LL_GPIO_PIN_14 00446 * @arg @ref LL_GPIO_PIN_15 00447 * @retval Returned value can be one of the following values: 00448 * @arg @ref LL_GPIO_SPEED_FREQ_LOW 00449 * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM 00450 * @arg @ref LL_GPIO_SPEED_FREQ_HIGH 00451 * @arg @ref LL_GPIO_SPEED_FREQ_VERY_HIGH 00452 */ 00453 __STATIC_INLINE uint32_t LL_GPIO_GetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin) 00454 { 00455 return (uint32_t)(READ_BIT(GPIOx->OSPEEDR, ((Pin * Pin) * GPIO_OSPEEDR_OSPEED0)) / (Pin * Pin)); 00456 } 00457 00458 /** 00459 * @brief Configure gpio pull-up or pull-down for a dedicated pin on a dedicated port. 00460 * @note Warning: only one pin can be passed as parameter. 00461 * @rmtoll PUPDR PUPDy LL_GPIO_SetPinPull 00462 * @param GPIOx GPIO Port 00463 * @param Pin This parameter can be one of the following values: 00464 * @arg @ref LL_GPIO_PIN_0 00465 * @arg @ref LL_GPIO_PIN_1 00466 * @arg @ref LL_GPIO_PIN_2 00467 * @arg @ref LL_GPIO_PIN_3 00468 * @arg @ref LL_GPIO_PIN_4 00469 * @arg @ref LL_GPIO_PIN_5 00470 * @arg @ref LL_GPIO_PIN_6 00471 * @arg @ref LL_GPIO_PIN_7 00472 * @arg @ref LL_GPIO_PIN_8 00473 * @arg @ref LL_GPIO_PIN_9 00474 * @arg @ref LL_GPIO_PIN_10 00475 * @arg @ref LL_GPIO_PIN_11 00476 * @arg @ref LL_GPIO_PIN_12 00477 * @arg @ref LL_GPIO_PIN_13 00478 * @arg @ref LL_GPIO_PIN_14 00479 * @arg @ref LL_GPIO_PIN_15 00480 * @param Pull This parameter can be one of the following values: 00481 * @arg @ref LL_GPIO_PULL_NO 00482 * @arg @ref LL_GPIO_PULL_UP 00483 * @arg @ref LL_GPIO_PULL_DOWN 00484 * @retval None 00485 */ 00486 __STATIC_INLINE void LL_GPIO_SetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Pull) 00487 { 00488 MODIFY_REG(GPIOx->PUPDR, ((Pin * Pin) * GPIO_PUPDR_PUPD0), ((Pin * Pin) * Pull)); 00489 } 00490 00491 /** 00492 * @brief Return gpio pull-up or pull-down for a dedicated pin on a dedicated port 00493 * @note Warning: only one pin can be passed as parameter. 00494 * @rmtoll PUPDR PUPDy LL_GPIO_GetPinPull 00495 * @param GPIOx GPIO Port 00496 * @param Pin This parameter can be one of the following values: 00497 * @arg @ref LL_GPIO_PIN_0 00498 * @arg @ref LL_GPIO_PIN_1 00499 * @arg @ref LL_GPIO_PIN_2 00500 * @arg @ref LL_GPIO_PIN_3 00501 * @arg @ref LL_GPIO_PIN_4 00502 * @arg @ref LL_GPIO_PIN_5 00503 * @arg @ref LL_GPIO_PIN_6 00504 * @arg @ref LL_GPIO_PIN_7 00505 * @arg @ref LL_GPIO_PIN_8 00506 * @arg @ref LL_GPIO_PIN_9 00507 * @arg @ref LL_GPIO_PIN_10 00508 * @arg @ref LL_GPIO_PIN_11 00509 * @arg @ref LL_GPIO_PIN_12 00510 * @arg @ref LL_GPIO_PIN_13 00511 * @arg @ref LL_GPIO_PIN_14 00512 * @arg @ref LL_GPIO_PIN_15 00513 * @retval Returned value can be one of the following values: 00514 * @arg @ref LL_GPIO_PULL_NO 00515 * @arg @ref LL_GPIO_PULL_UP 00516 * @arg @ref LL_GPIO_PULL_DOWN 00517 */ 00518 __STATIC_INLINE uint32_t LL_GPIO_GetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin) 00519 { 00520 return (uint32_t)(READ_BIT(GPIOx->PUPDR, ((Pin * Pin) * GPIO_PUPDR_PUPD0)) / (Pin * Pin)); 00521 } 00522 00523 /** 00524 * @brief Configure gpio alternate function of a dedicated pin from 0 to 7 for a dedicated port. 00525 * @note Possible values are from AF0 to AF15 depending on target. 00526 * @note Warning: only one pin can be passed as parameter. 00527 * @rmtoll AFRL AFSELy LL_GPIO_SetAFPin_0_7 00528 * @param GPIOx GPIO Port 00529 * @param Pin This parameter can be one of the following values: 00530 * @arg @ref LL_GPIO_PIN_0 00531 * @arg @ref LL_GPIO_PIN_1 00532 * @arg @ref LL_GPIO_PIN_2 00533 * @arg @ref LL_GPIO_PIN_3 00534 * @arg @ref LL_GPIO_PIN_4 00535 * @arg @ref LL_GPIO_PIN_5 00536 * @arg @ref LL_GPIO_PIN_6 00537 * @arg @ref LL_GPIO_PIN_7 00538 * @param Alternate This parameter can be one of the following values: 00539 * @arg @ref LL_GPIO_AF_0 00540 * @arg @ref LL_GPIO_AF_1 00541 * @arg @ref LL_GPIO_AF_2 00542 * @arg @ref LL_GPIO_AF_3 00543 * @arg @ref LL_GPIO_AF_4 00544 * @arg @ref LL_GPIO_AF_5 00545 * @arg @ref LL_GPIO_AF_6 00546 * @arg @ref LL_GPIO_AF_7 00547 * @arg @ref LL_GPIO_AF_8 00548 * @arg @ref LL_GPIO_AF_9 00549 * @arg @ref LL_GPIO_AF_10 00550 * @arg @ref LL_GPIO_AF_11 00551 * @arg @ref LL_GPIO_AF_12 00552 * @arg @ref LL_GPIO_AF_13 00553 * @arg @ref LL_GPIO_AF_14 00554 * @arg @ref LL_GPIO_AF_15 00555 * @retval None 00556 */ 00557 __STATIC_INLINE void LL_GPIO_SetAFPin_0_7(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Alternate) 00558 { 00559 MODIFY_REG(GPIOx->AFR[0], ((((Pin * Pin) * Pin) * Pin) * GPIO_AFRL_AFSEL0), 00560 ((((Pin * Pin) * Pin) * Pin) * Alternate)); 00561 } 00562 00563 /** 00564 * @brief Return gpio alternate function of a dedicated pin from 0 to 7 for a dedicated port. 00565 * @rmtoll AFRL AFSELy LL_GPIO_GetAFPin_0_7 00566 * @param GPIOx GPIO Port 00567 * @param Pin This parameter can be one of the following values: 00568 * @arg @ref LL_GPIO_PIN_0 00569 * @arg @ref LL_GPIO_PIN_1 00570 * @arg @ref LL_GPIO_PIN_2 00571 * @arg @ref LL_GPIO_PIN_3 00572 * @arg @ref LL_GPIO_PIN_4 00573 * @arg @ref LL_GPIO_PIN_5 00574 * @arg @ref LL_GPIO_PIN_6 00575 * @arg @ref LL_GPIO_PIN_7 00576 * @retval Returned value can be one of the following values: 00577 * @arg @ref LL_GPIO_AF_0 00578 * @arg @ref LL_GPIO_AF_1 00579 * @arg @ref LL_GPIO_AF_2 00580 * @arg @ref LL_GPIO_AF_3 00581 * @arg @ref LL_GPIO_AF_4 00582 * @arg @ref LL_GPIO_AF_5 00583 * @arg @ref LL_GPIO_AF_6 00584 * @arg @ref LL_GPIO_AF_7 00585 * @arg @ref LL_GPIO_AF_8 00586 * @arg @ref LL_GPIO_AF_9 00587 * @arg @ref LL_GPIO_AF_10 00588 * @arg @ref LL_GPIO_AF_11 00589 * @arg @ref LL_GPIO_AF_12 00590 * @arg @ref LL_GPIO_AF_13 00591 * @arg @ref LL_GPIO_AF_14 00592 * @arg @ref LL_GPIO_AF_15 00593 */ 00594 __STATIC_INLINE uint32_t LL_GPIO_GetAFPin_0_7(GPIO_TypeDef *GPIOx, uint32_t Pin) 00595 { 00596 return (uint32_t)(READ_BIT(GPIOx->AFR[0], 00597 ((((Pin * Pin) * Pin) * Pin) * GPIO_AFRL_AFSEL0)) / (((Pin * Pin) * Pin) * Pin)); 00598 } 00599 00600 /** 00601 * @brief Configure gpio alternate function of a dedicated pin from 8 to 15 for a dedicated port. 00602 * @note Possible values are from AF0 to AF15 depending on target. 00603 * @note Warning: only one pin can be passed as parameter. 00604 * @rmtoll AFRH AFSELy LL_GPIO_SetAFPin_8_15 00605 * @param GPIOx GPIO Port 00606 * @param Pin This parameter can be one of the following values: 00607 * @arg @ref LL_GPIO_PIN_8 00608 * @arg @ref LL_GPIO_PIN_9 00609 * @arg @ref LL_GPIO_PIN_10 00610 * @arg @ref LL_GPIO_PIN_11 00611 * @arg @ref LL_GPIO_PIN_12 00612 * @arg @ref LL_GPIO_PIN_13 00613 * @arg @ref LL_GPIO_PIN_14 00614 * @arg @ref LL_GPIO_PIN_15 00615 * @param Alternate This parameter can be one of the following values: 00616 * @arg @ref LL_GPIO_AF_0 00617 * @arg @ref LL_GPIO_AF_1 00618 * @arg @ref LL_GPIO_AF_2 00619 * @arg @ref LL_GPIO_AF_3 00620 * @arg @ref LL_GPIO_AF_4 00621 * @arg @ref LL_GPIO_AF_5 00622 * @arg @ref LL_GPIO_AF_6 00623 * @arg @ref LL_GPIO_AF_7 00624 * @arg @ref LL_GPIO_AF_8 00625 * @arg @ref LL_GPIO_AF_9 00626 * @arg @ref LL_GPIO_AF_10 00627 * @arg @ref LL_GPIO_AF_11 00628 * @arg @ref LL_GPIO_AF_12 00629 * @arg @ref LL_GPIO_AF_13 00630 * @arg @ref LL_GPIO_AF_14 00631 * @arg @ref LL_GPIO_AF_15 00632 * @retval None 00633 */ 00634 __STATIC_INLINE void LL_GPIO_SetAFPin_8_15(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Alternate) 00635 { 00636 MODIFY_REG(GPIOx->AFR[1], (((((Pin >> 8U) * (Pin >> 8U)) * (Pin >> 8U)) * (Pin >> 8U)) * GPIO_AFRH_AFSEL8), 00637 (((((Pin >> 8U) * (Pin >> 8U)) * (Pin >> 8U)) * (Pin >> 8U)) * Alternate)); 00638 } 00639 00640 /** 00641 * @brief Return gpio alternate function of a dedicated pin from 8 to 15 for a dedicated port. 00642 * @note Possible values are from AF0 to AF15 depending on target. 00643 * @rmtoll AFRH AFSELy LL_GPIO_GetAFPin_8_15 00644 * @param GPIOx GPIO Port 00645 * @param Pin This parameter can be one of the following values: 00646 * @arg @ref LL_GPIO_PIN_8 00647 * @arg @ref LL_GPIO_PIN_9 00648 * @arg @ref LL_GPIO_PIN_10 00649 * @arg @ref LL_GPIO_PIN_11 00650 * @arg @ref LL_GPIO_PIN_12 00651 * @arg @ref LL_GPIO_PIN_13 00652 * @arg @ref LL_GPIO_PIN_14 00653 * @arg @ref LL_GPIO_PIN_15 00654 * @retval Returned value can be one of the following values: 00655 * @arg @ref LL_GPIO_AF_0 00656 * @arg @ref LL_GPIO_AF_1 00657 * @arg @ref LL_GPIO_AF_2 00658 * @arg @ref LL_GPIO_AF_3 00659 * @arg @ref LL_GPIO_AF_4 00660 * @arg @ref LL_GPIO_AF_5 00661 * @arg @ref LL_GPIO_AF_6 00662 * @arg @ref LL_GPIO_AF_7 00663 * @arg @ref LL_GPIO_AF_8 00664 * @arg @ref LL_GPIO_AF_9 00665 * @arg @ref LL_GPIO_AF_10 00666 * @arg @ref LL_GPIO_AF_11 00667 * @arg @ref LL_GPIO_AF_12 00668 * @arg @ref LL_GPIO_AF_13 00669 * @arg @ref LL_GPIO_AF_14 00670 * @arg @ref LL_GPIO_AF_15 00671 */ 00672 __STATIC_INLINE uint32_t LL_GPIO_GetAFPin_8_15(GPIO_TypeDef *GPIOx, uint32_t Pin) 00673 { 00674 return (uint32_t)(READ_BIT(GPIOx->AFR[1], 00675 (((((Pin >> 8U) * (Pin >> 8U)) * (Pin >> 8U)) * (Pin >> 8U)) * GPIO_AFRH_AFSEL8)) / ((((Pin >> 8U) * 00676 (Pin >> 8U)) * (Pin >> 8U)) * (Pin >> 8U))); 00677 } 00678 00679 00680 /** 00681 * @brief Lock configuration of several pins for a dedicated port. 00682 * @note When the lock sequence has been applied on a port bit, the 00683 * value of this port bit can no longer be modified until the 00684 * next reset. 00685 * @note Each lock bit freezes a specific configuration register 00686 * (control and alternate function registers). 00687 * @rmtoll LCKR LCKK LL_GPIO_LockPin 00688 * @param GPIOx GPIO Port 00689 * @param PinMask This parameter can be a combination of the following values: 00690 * @arg @ref LL_GPIO_PIN_0 00691 * @arg @ref LL_GPIO_PIN_1 00692 * @arg @ref LL_GPIO_PIN_2 00693 * @arg @ref LL_GPIO_PIN_3 00694 * @arg @ref LL_GPIO_PIN_4 00695 * @arg @ref LL_GPIO_PIN_5 00696 * @arg @ref LL_GPIO_PIN_6 00697 * @arg @ref LL_GPIO_PIN_7 00698 * @arg @ref LL_GPIO_PIN_8 00699 * @arg @ref LL_GPIO_PIN_9 00700 * @arg @ref LL_GPIO_PIN_10 00701 * @arg @ref LL_GPIO_PIN_11 00702 * @arg @ref LL_GPIO_PIN_12 00703 * @arg @ref LL_GPIO_PIN_13 00704 * @arg @ref LL_GPIO_PIN_14 00705 * @arg @ref LL_GPIO_PIN_15 00706 * @arg @ref LL_GPIO_PIN_ALL 00707 * @retval None 00708 */ 00709 __STATIC_INLINE void LL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) 00710 { 00711 __IO uint32_t temp; 00712 WRITE_REG(GPIOx->LCKR, GPIO_LCKR_LCKK | PinMask); 00713 WRITE_REG(GPIOx->LCKR, PinMask); 00714 WRITE_REG(GPIOx->LCKR, GPIO_LCKR_LCKK | PinMask); 00715 /* Read LCKK register. This read is mandatory to complete key lock sequence */ 00716 temp = READ_REG(GPIOx->LCKR); 00717 (void) temp; 00718 } 00719 00720 /** 00721 * @brief Return 1 if all pins passed as parameter, of a dedicated port, are locked. else Return 0. 00722 * @rmtoll LCKR LCKy LL_GPIO_IsPinLocked 00723 * @param GPIOx GPIO Port 00724 * @param PinMask This parameter can be a combination of the following values: 00725 * @arg @ref LL_GPIO_PIN_0 00726 * @arg @ref LL_GPIO_PIN_1 00727 * @arg @ref LL_GPIO_PIN_2 00728 * @arg @ref LL_GPIO_PIN_3 00729 * @arg @ref LL_GPIO_PIN_4 00730 * @arg @ref LL_GPIO_PIN_5 00731 * @arg @ref LL_GPIO_PIN_6 00732 * @arg @ref LL_GPIO_PIN_7 00733 * @arg @ref LL_GPIO_PIN_8 00734 * @arg @ref LL_GPIO_PIN_9 00735 * @arg @ref LL_GPIO_PIN_10 00736 * @arg @ref LL_GPIO_PIN_11 00737 * @arg @ref LL_GPIO_PIN_12 00738 * @arg @ref LL_GPIO_PIN_13 00739 * @arg @ref LL_GPIO_PIN_14 00740 * @arg @ref LL_GPIO_PIN_15 00741 * @arg @ref LL_GPIO_PIN_ALL 00742 * @retval State of bit (1 or 0). 00743 */ 00744 __STATIC_INLINE uint32_t LL_GPIO_IsPinLocked(GPIO_TypeDef *GPIOx, uint32_t PinMask) 00745 { 00746 return ((READ_BIT(GPIOx->LCKR, PinMask) == (PinMask)) ? 1UL : 0UL); 00747 } 00748 00749 /** 00750 * @brief Return 1 if one of the pin of a dedicated port is locked. else return 0. 00751 * @rmtoll LCKR LCKK LL_GPIO_IsAnyPinLocked 00752 * @param GPIOx GPIO Port 00753 * @retval State of bit (1 or 0). 00754 */ 00755 __STATIC_INLINE uint32_t LL_GPIO_IsAnyPinLocked(GPIO_TypeDef *GPIOx) 00756 { 00757 return ((READ_BIT(GPIOx->LCKR, GPIO_LCKR_LCKK) == (GPIO_LCKR_LCKK)) ? 1UL : 0UL); 00758 } 00759 00760 /** 00761 * @} 00762 */ 00763 00764 /** @defgroup GPIO_LL_EF_Data_Access Data Access 00765 * @{ 00766 */ 00767 00768 /** 00769 * @brief Return full input data register value for a dedicated port. 00770 * @rmtoll IDR IDy LL_GPIO_ReadInputPort 00771 * @param GPIOx GPIO Port 00772 * @retval Input data register value of port 00773 */ 00774 __STATIC_INLINE uint32_t LL_GPIO_ReadInputPort(GPIO_TypeDef *GPIOx) 00775 { 00776 return (uint32_t)(READ_REG(GPIOx->IDR)); 00777 } 00778 00779 /** 00780 * @brief Return if input data level for several pins of dedicated port is high or low. 00781 * @rmtoll IDR IDy LL_GPIO_IsInputPinSet 00782 * @param GPIOx GPIO Port 00783 * @param PinMask This parameter can be a combination of the following values: 00784 * @arg @ref LL_GPIO_PIN_0 00785 * @arg @ref LL_GPIO_PIN_1 00786 * @arg @ref LL_GPIO_PIN_2 00787 * @arg @ref LL_GPIO_PIN_3 00788 * @arg @ref LL_GPIO_PIN_4 00789 * @arg @ref LL_GPIO_PIN_5 00790 * @arg @ref LL_GPIO_PIN_6 00791 * @arg @ref LL_GPIO_PIN_7 00792 * @arg @ref LL_GPIO_PIN_8 00793 * @arg @ref LL_GPIO_PIN_9 00794 * @arg @ref LL_GPIO_PIN_10 00795 * @arg @ref LL_GPIO_PIN_11 00796 * @arg @ref LL_GPIO_PIN_12 00797 * @arg @ref LL_GPIO_PIN_13 00798 * @arg @ref LL_GPIO_PIN_14 00799 * @arg @ref LL_GPIO_PIN_15 00800 * @arg @ref LL_GPIO_PIN_ALL 00801 * @retval State of bit (1 or 0). 00802 */ 00803 __STATIC_INLINE uint32_t LL_GPIO_IsInputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask) 00804 { 00805 return ((READ_BIT(GPIOx->IDR, PinMask) == (PinMask)) ? 1UL : 0UL); 00806 } 00807 00808 /** 00809 * @brief Write output data register for the port. 00810 * @rmtoll ODR ODy LL_GPIO_WriteOutputPort 00811 * @param GPIOx GPIO Port 00812 * @param PortValue Level value for each pin of the port 00813 * @retval None 00814 */ 00815 __STATIC_INLINE void LL_GPIO_WriteOutputPort(GPIO_TypeDef *GPIOx, uint32_t PortValue) 00816 { 00817 WRITE_REG(GPIOx->ODR, PortValue); 00818 } 00819 00820 /** 00821 * @brief Return full output data register value for a dedicated port. 00822 * @rmtoll ODR ODy LL_GPIO_ReadOutputPort 00823 * @param GPIOx GPIO Port 00824 * @retval Output data register value of port 00825 */ 00826 __STATIC_INLINE uint32_t LL_GPIO_ReadOutputPort(GPIO_TypeDef *GPIOx) 00827 { 00828 return (uint32_t)(READ_REG(GPIOx->ODR)); 00829 } 00830 00831 /** 00832 * @brief Return if input data level for several pins of dedicated port is high or low. 00833 * @rmtoll ODR ODy LL_GPIO_IsOutputPinSet 00834 * @param GPIOx GPIO Port 00835 * @param PinMask This parameter can be a combination of the following values: 00836 * @arg @ref LL_GPIO_PIN_0 00837 * @arg @ref LL_GPIO_PIN_1 00838 * @arg @ref LL_GPIO_PIN_2 00839 * @arg @ref LL_GPIO_PIN_3 00840 * @arg @ref LL_GPIO_PIN_4 00841 * @arg @ref LL_GPIO_PIN_5 00842 * @arg @ref LL_GPIO_PIN_6 00843 * @arg @ref LL_GPIO_PIN_7 00844 * @arg @ref LL_GPIO_PIN_8 00845 * @arg @ref LL_GPIO_PIN_9 00846 * @arg @ref LL_GPIO_PIN_10 00847 * @arg @ref LL_GPIO_PIN_11 00848 * @arg @ref LL_GPIO_PIN_12 00849 * @arg @ref LL_GPIO_PIN_13 00850 * @arg @ref LL_GPIO_PIN_14 00851 * @arg @ref LL_GPIO_PIN_15 00852 * @arg @ref LL_GPIO_PIN_ALL 00853 * @retval State of bit (1 or 0). 00854 */ 00855 __STATIC_INLINE uint32_t LL_GPIO_IsOutputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask) 00856 { 00857 return ((READ_BIT(GPIOx->ODR, PinMask) == (PinMask)) ? 1UL : 0UL); 00858 } 00859 00860 /** 00861 * @brief Set several pins to high level on dedicated gpio port. 00862 * @rmtoll BSRR BSy LL_GPIO_SetOutputPin 00863 * @param GPIOx GPIO Port 00864 * @param PinMask This parameter can be a combination of the following values: 00865 * @arg @ref LL_GPIO_PIN_0 00866 * @arg @ref LL_GPIO_PIN_1 00867 * @arg @ref LL_GPIO_PIN_2 00868 * @arg @ref LL_GPIO_PIN_3 00869 * @arg @ref LL_GPIO_PIN_4 00870 * @arg @ref LL_GPIO_PIN_5 00871 * @arg @ref LL_GPIO_PIN_6 00872 * @arg @ref LL_GPIO_PIN_7 00873 * @arg @ref LL_GPIO_PIN_8 00874 * @arg @ref LL_GPIO_PIN_9 00875 * @arg @ref LL_GPIO_PIN_10 00876 * @arg @ref LL_GPIO_PIN_11 00877 * @arg @ref LL_GPIO_PIN_12 00878 * @arg @ref LL_GPIO_PIN_13 00879 * @arg @ref LL_GPIO_PIN_14 00880 * @arg @ref LL_GPIO_PIN_15 00881 * @arg @ref LL_GPIO_PIN_ALL 00882 * @retval None 00883 */ 00884 __STATIC_INLINE void LL_GPIO_SetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) 00885 { 00886 WRITE_REG(GPIOx->BSRR, PinMask); 00887 } 00888 00889 /** 00890 * @brief Set several pins to low level on dedicated gpio port. 00891 * @rmtoll BSRR BRy LL_GPIO_ResetOutputPin 00892 * @param GPIOx GPIO Port 00893 * @param PinMask This parameter can be a combination of the following values: 00894 * @arg @ref LL_GPIO_PIN_0 00895 * @arg @ref LL_GPIO_PIN_1 00896 * @arg @ref LL_GPIO_PIN_2 00897 * @arg @ref LL_GPIO_PIN_3 00898 * @arg @ref LL_GPIO_PIN_4 00899 * @arg @ref LL_GPIO_PIN_5 00900 * @arg @ref LL_GPIO_PIN_6 00901 * @arg @ref LL_GPIO_PIN_7 00902 * @arg @ref LL_GPIO_PIN_8 00903 * @arg @ref LL_GPIO_PIN_9 00904 * @arg @ref LL_GPIO_PIN_10 00905 * @arg @ref LL_GPIO_PIN_11 00906 * @arg @ref LL_GPIO_PIN_12 00907 * @arg @ref LL_GPIO_PIN_13 00908 * @arg @ref LL_GPIO_PIN_14 00909 * @arg @ref LL_GPIO_PIN_15 00910 * @arg @ref LL_GPIO_PIN_ALL 00911 * @retval None 00912 */ 00913 __STATIC_INLINE void LL_GPIO_ResetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) 00914 { 00915 WRITE_REG(GPIOx->BSRR, PinMask << 16U); 00916 } 00917 00918 /** 00919 * @brief Toggle data value for several pin of dedicated port. 00920 * @rmtoll ODR ODy LL_GPIO_TogglePin 00921 * @param GPIOx GPIO Port 00922 * @param PinMask This parameter can be a combination of the following values: 00923 * @arg @ref LL_GPIO_PIN_0 00924 * @arg @ref LL_GPIO_PIN_1 00925 * @arg @ref LL_GPIO_PIN_2 00926 * @arg @ref LL_GPIO_PIN_3 00927 * @arg @ref LL_GPIO_PIN_4 00928 * @arg @ref LL_GPIO_PIN_5 00929 * @arg @ref LL_GPIO_PIN_6 00930 * @arg @ref LL_GPIO_PIN_7 00931 * @arg @ref LL_GPIO_PIN_8 00932 * @arg @ref LL_GPIO_PIN_9 00933 * @arg @ref LL_GPIO_PIN_10 00934 * @arg @ref LL_GPIO_PIN_11 00935 * @arg @ref LL_GPIO_PIN_12 00936 * @arg @ref LL_GPIO_PIN_13 00937 * @arg @ref LL_GPIO_PIN_14 00938 * @arg @ref LL_GPIO_PIN_15 00939 * @arg @ref LL_GPIO_PIN_ALL 00940 * @retval None 00941 */ 00942 __STATIC_INLINE void LL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint32_t PinMask) 00943 { 00944 uint32_t odr = READ_REG(GPIOx->ODR); 00945 WRITE_REG(GPIOx->BSRR, ((odr & PinMask) << 16u) | (~odr & PinMask)); 00946 } 00947 00948 /** 00949 * @} 00950 */ 00951 00952 #if defined(USE_FULL_LL_DRIVER) 00953 /** @defgroup GPIO_LL_EF_Init Initialization and de-initialization functions 00954 * @{ 00955 */ 00956 00957 ErrorStatus LL_GPIO_DeInit(GPIO_TypeDef *GPIOx); 00958 ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStruct); 00959 void LL_GPIO_StructInit(LL_GPIO_InitTypeDef *GPIO_InitStruct); 00960 00961 /** 00962 * @} 00963 */ 00964 #endif /* USE_FULL_LL_DRIVER */ 00965 00966 /** 00967 * @} 00968 */ 00969 00970 /** 00971 * @} 00972 */ 00973 00974 #endif /*defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) || defined (GPIOH) || defined (GPIOI) || defined (GPIOJ) || defined (GPIOK) */ 00975 /** 00976 * @} 00977 */ 00978 00979 #ifdef __cplusplus 00980 } 00981 #endif 00982 00983 #endif /* STM32H7xx_LL_GPIO_H */ 00984