![]() |
|
|||
File indexing completed on 2025-05-11 08:23:37
0001 /** 0002 ****************************************************************************** 0003 * @file stm32h7xx_ll_gpio.h 0004 * @author MCD Application Team 0005 * @brief Header file of GPIO LL module. 0006 ****************************************************************************** 0007 * @attention 0008 * 0009 * Copyright (c) 2017 STMicroelectronics. 0010 * All rights reserved. 0011 * 0012 * This software is licensed under terms that can be found in the LICENSE file 0013 * in the root directory of this software component. 0014 * If no LICENSE file comes with this software, it is provided AS-IS. 0015 * 0016 ****************************************************************************** 0017 */ 0018 0019 /* Define to prevent recursive inclusion -------------------------------------*/ 0020 #ifndef STM32H7xx_LL_GPIO_H 0021 #define STM32H7xx_LL_GPIO_H 0022 0023 #ifdef __cplusplus 0024 extern "C" { 0025 #endif 0026 0027 /* Includes ------------------------------------------------------------------*/ 0028 #include "stm32h7xx.h" 0029 0030 /** @addtogroup STM32H7xx_LL_Driver 0031 * @{ 0032 */ 0033 0034 #if defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) || defined (GPIOH) || defined (GPIOI) || defined (GPIOJ) || defined (GPIOK) 0035 0036 /** @defgroup GPIO_LL GPIO 0037 * @ingroup RTEMSBSPsARMSTM32H7 0038 * @{ 0039 */ 0040 0041 /* Private types -------------------------------------------------------------*/ 0042 /* Private variables ---------------------------------------------------------*/ 0043 /* Private constants ---------------------------------------------------------*/ 0044 /* Private macros ------------------------------------------------------------*/ 0045 #if defined(USE_FULL_LL_DRIVER) || defined(__rtems__) 0046 /** @defgroup GPIO_LL_Private_Macros GPIO Private Macros 0047 * @ingroup RTEMSBSPsARMSTM32H7 0048 * @{ 0049 */ 0050 0051 /** 0052 * @} 0053 */ 0054 #endif /*USE_FULL_LL_DRIVER*/ 0055 0056 /* Exported types ------------------------------------------------------------*/ 0057 #if defined(USE_FULL_LL_DRIVER) || defined(__rtems__) 0058 /** @defgroup GPIO_LL_ES_INIT GPIO Exported Init structures 0059 * @ingroup RTEMSBSPsARMSTM32H7 0060 * @{ 0061 */ 0062 0063 /** 0064 * @brief LL GPIO Init Structure definition 0065 */ 0066 typedef struct 0067 { 0068 uint32_t Pin; /*!< Specifies the GPIO pins to be configured. 0069 This parameter can be any value of @ref GPIO_LL_EC_PIN */ 0070 0071 uint32_t Mode; /*!< Specifies the operating mode for the selected pins. 0072 This parameter can be a value of @ref GPIO_LL_EC_MODE. 0073 0074 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinMode().*/ 0075 0076 uint32_t Speed; /*!< Specifies the speed for the selected pins. 0077 This parameter can be a value of @ref GPIO_LL_EC_SPEED. 0078 0079 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinSpeed().*/ 0080 0081 uint32_t OutputType; /*!< Specifies the operating output type for the selected pins. 0082 This parameter can be a value of @ref GPIO_LL_EC_OUTPUT. 0083 0084 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinOutputType().*/ 0085 0086 uint32_t Pull; /*!< Specifies the operating Pull-up/Pull down for the selected pins. 0087 This parameter can be a value of @ref GPIO_LL_EC_PULL. 0088 0089 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinPull().*/ 0090 0091 uint32_t Alternate; /*!< Specifies the Peripheral to be connected to the selected pins. 0092 This parameter can be a value of @ref GPIO_LL_EC_AF. 0093 0094 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetAFPin_0_7() and LL_GPIO_SetAFPin_8_15().*/ 0095 } LL_GPIO_InitTypeDef; 0096 0097 /** 0098 * @} 0099 */ 0100 #endif /* USE_FULL_LL_DRIVER */ 0101 0102 /* Exported constants --------------------------------------------------------*/ 0103 /** @defgroup GPIO_LL_Exported_Constants GPIO Exported Constants 0104 * @ingroup RTEMSBSPsARMSTM32H7 0105 * @{ 0106 */ 0107 0108 /** @defgroup GPIO_LL_EC_PIN PIN 0109 * @ingroup RTEMSBSPsARMSTM32H7 0110 * @{ 0111 */ 0112 #define LL_GPIO_PIN_0 GPIO_BSRR_BS0 /*!< Select pin 0 */ 0113 #define LL_GPIO_PIN_1 GPIO_BSRR_BS1 /*!< Select pin 1 */ 0114 #define LL_GPIO_PIN_2 GPIO_BSRR_BS2 /*!< Select pin 2 */ 0115 #define LL_GPIO_PIN_3 GPIO_BSRR_BS3 /*!< Select pin 3 */ 0116 #define LL_GPIO_PIN_4 GPIO_BSRR_BS4 /*!< Select pin 4 */ 0117 #define LL_GPIO_PIN_5 GPIO_BSRR_BS5 /*!< Select pin 5 */ 0118 #define LL_GPIO_PIN_6 GPIO_BSRR_BS6 /*!< Select pin 6 */ 0119 #define LL_GPIO_PIN_7 GPIO_BSRR_BS7 /*!< Select pin 7 */ 0120 #define LL_GPIO_PIN_8 GPIO_BSRR_BS8 /*!< Select pin 8 */ 0121 #define LL_GPIO_PIN_9 GPIO_BSRR_BS9 /*!< Select pin 9 */ 0122 #define LL_GPIO_PIN_10 GPIO_BSRR_BS10 /*!< Select pin 10 */ 0123 #define LL_GPIO_PIN_11 GPIO_BSRR_BS11 /*!< Select pin 11 */ 0124 #define LL_GPIO_PIN_12 GPIO_BSRR_BS12 /*!< Select pin 12 */ 0125 #define LL_GPIO_PIN_13 GPIO_BSRR_BS13 /*!< Select pin 13 */ 0126 #define LL_GPIO_PIN_14 GPIO_BSRR_BS14 /*!< Select pin 14 */ 0127 #define LL_GPIO_PIN_15 GPIO_BSRR_BS15 /*!< Select pin 15 */ 0128 #define LL_GPIO_PIN_ALL (GPIO_BSRR_BS0 | GPIO_BSRR_BS1 | GPIO_BSRR_BS2 | \ 0129 GPIO_BSRR_BS3 | GPIO_BSRR_BS4 | GPIO_BSRR_BS5 | \ 0130 GPIO_BSRR_BS6 | GPIO_BSRR_BS7 | GPIO_BSRR_BS8 | \ 0131 GPIO_BSRR_BS9 | GPIO_BSRR_BS10 | GPIO_BSRR_BS11 | \ 0132 GPIO_BSRR_BS12 | GPIO_BSRR_BS13 | GPIO_BSRR_BS14 | \ 0133 GPIO_BSRR_BS15) /*!< Select all pins */ 0134 /** 0135 * @} 0136 */ 0137 0138 /** @defgroup GPIO_LL_EC_MODE Mode 0139 * @ingroup RTEMSBSPsARMSTM32H7 0140 * @{ 0141 */ 0142 #define LL_GPIO_MODE_INPUT (0x00000000U) /*!< Select input mode */ 0143 #define LL_GPIO_MODE_OUTPUT GPIO_MODER_MODE0_0 /*!< Select output mode */ 0144 #define LL_GPIO_MODE_ALTERNATE GPIO_MODER_MODE0_1 /*!< Select alternate function mode */ 0145 #define LL_GPIO_MODE_ANALOG GPIO_MODER_MODE0 /*!< Select analog mode */ 0146 /** 0147 * @} 0148 */ 0149 0150 /** @defgroup GPIO_LL_EC_OUTPUT Output Type 0151 * @ingroup RTEMSBSPsARMSTM32H7 0152 * @{ 0153 */ 0154 #define LL_GPIO_OUTPUT_PUSHPULL (0x00000000U) /*!< Select push-pull as output type */ 0155 #define LL_GPIO_OUTPUT_OPENDRAIN GPIO_OTYPER_OT0 /*!< Select open-drain as output type */ 0156 /** 0157 * @} 0158 */ 0159 0160 /** @defgroup GPIO_LL_EC_SPEED Output Speed 0161 * @ingroup RTEMSBSPsARMSTM32H7 0162 * @{ 0163 */ 0164 #define LL_GPIO_SPEED_FREQ_LOW (0x00000000U) /*!< Select I/O low output speed */ 0165 #define LL_GPIO_SPEED_FREQ_MEDIUM GPIO_OSPEEDR_OSPEED0_0 /*!< Select I/O medium output speed */ 0166 #define LL_GPIO_SPEED_FREQ_HIGH GPIO_OSPEEDR_OSPEED0_1 /*!< Select I/O fast output speed */ 0167 #define LL_GPIO_SPEED_FREQ_VERY_HIGH GPIO_OSPEEDR_OSPEED0 /*!< Select I/O high output speed */ 0168 /** 0169 * @} 0170 */ 0171 #define LL_GPIO_SPEED_LOW LL_GPIO_SPEED_FREQ_LOW 0172 #define LL_GPIO_SPEED_MEDIUM LL_GPIO_SPEED_FREQ_MEDIUM 0173 #define LL_GPIO_SPEED_FAST LL_GPIO_SPEED_FREQ_HIGH 0174 #define LL_GPIO_SPEED_HIGH LL_GPIO_SPEED_FREQ_VERY_HIGH 0175 0176 0177 /** @defgroup GPIO_LL_EC_PULL Pull Up Pull Down 0178 * @ingroup RTEMSBSPsARMSTM32H7 0179 * @{ 0180 */ 0181 #define LL_GPIO_PULL_NO (0x00000000U) /*!< Select I/O no pull */ 0182 #define LL_GPIO_PULL_UP GPIO_PUPDR_PUPD0_0 /*!< Select I/O pull up */ 0183 #define LL_GPIO_PULL_DOWN GPIO_PUPDR_PUPD0_1 /*!< Select I/O pull down */ 0184 /** 0185 * @} 0186 */ 0187 0188 /** @defgroup GPIO_LL_EC_AF Alternate Function 0189 * @ingroup RTEMSBSPsARMSTM32H7 0190 * @{ 0191 */ 0192 #define LL_GPIO_AF_0 (0x0000000U) /*!< Select alternate function 0 */ 0193 #define LL_GPIO_AF_1 (0x0000001U) /*!< Select alternate function 1 */ 0194 #define LL_GPIO_AF_2 (0x0000002U) /*!< Select alternate function 2 */ 0195 #define LL_GPIO_AF_3 (0x0000003U) /*!< Select alternate function 3 */ 0196 #define LL_GPIO_AF_4 (0x0000004U) /*!< Select alternate function 4 */ 0197 #define LL_GPIO_AF_5 (0x0000005U) /*!< Select alternate function 5 */ 0198 #define LL_GPIO_AF_6 (0x0000006U) /*!< Select alternate function 6 */ 0199 #define LL_GPIO_AF_7 (0x0000007U) /*!< Select alternate function 7 */ 0200 #define LL_GPIO_AF_8 (0x0000008U) /*!< Select alternate function 8 */ 0201 #define LL_GPIO_AF_9 (0x0000009U) /*!< Select alternate function 9 */ 0202 #define LL_GPIO_AF_10 (0x000000AU) /*!< Select alternate function 10 */ 0203 #define LL_GPIO_AF_11 (0x000000BU) /*!< Select alternate function 11 */ 0204 #define LL_GPIO_AF_12 (0x000000CU) /*!< Select alternate function 12 */ 0205 #define LL_GPIO_AF_13 (0x000000DU) /*!< Select alternate function 13 */ 0206 #define LL_GPIO_AF_14 (0x000000EU) /*!< Select alternate function 14 */ 0207 #define LL_GPIO_AF_15 (0x000000FU) /*!< Select alternate function 15 */ 0208 /** 0209 * @} 0210 */ 0211 0212 /** 0213 * @} 0214 */ 0215 0216 /* Exported macro ------------------------------------------------------------*/ 0217 /** @defgroup GPIO_LL_Exported_Macros GPIO Exported Macros 0218 * @ingroup RTEMSBSPsARMSTM32H7 0219 * @{ 0220 */ 0221 0222 /** @defgroup GPIO_LL_EM_WRITE_READ Common Write and read registers Macros 0223 * @ingroup RTEMSBSPsARMSTM32H7 0224 * @{ 0225 */ 0226 0227 /** 0228 * @brief Write a value in GPIO register 0229 * @param __INSTANCE__ GPIO Instance 0230 * @param __REG__ Register to be written 0231 * @param __VALUE__ Value to be written in the register 0232 * @retval None 0233 */ 0234 #define LL_GPIO_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) 0235 0236 /** 0237 * @brief Read a value in GPIO register 0238 * @param __INSTANCE__ GPIO Instance 0239 * @param __REG__ Register to be read 0240 * @retval Register value 0241 */ 0242 #define LL_GPIO_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) 0243 /** 0244 * @} 0245 */ 0246 0247 /** 0248 * @} 0249 */ 0250 0251 /* Exported functions --------------------------------------------------------*/ 0252 /** @defgroup GPIO_LL_Exported_Functions GPIO Exported Functions 0253 * @ingroup RTEMSBSPsARMSTM32H7 0254 * @{ 0255 */ 0256 0257 /** @defgroup GPIO_LL_EF_Port_Configuration Port Configuration 0258 * @ingroup RTEMSBSPsARMSTM32H7 0259 * @{ 0260 */ 0261 0262 /** 0263 * @brief Configure gpio mode for a dedicated pin on dedicated port. 0264 * @note I/O mode can be Input mode, General purpose output, Alternate function mode or Analog. 0265 * @note Warning: only one pin can be passed as parameter. 0266 * @rmtoll MODER MODEy LL_GPIO_SetPinMode 0267 * @param GPIOx GPIO Port 0268 * @param Pin This parameter can be one of the following values: 0269 * @arg @ref LL_GPIO_PIN_0 0270 * @arg @ref LL_GPIO_PIN_1 0271 * @arg @ref LL_GPIO_PIN_2 0272 * @arg @ref LL_GPIO_PIN_3 0273 * @arg @ref LL_GPIO_PIN_4 0274 * @arg @ref LL_GPIO_PIN_5 0275 * @arg @ref LL_GPIO_PIN_6 0276 * @arg @ref LL_GPIO_PIN_7 0277 * @arg @ref LL_GPIO_PIN_8 0278 * @arg @ref LL_GPIO_PIN_9 0279 * @arg @ref LL_GPIO_PIN_10 0280 * @arg @ref LL_GPIO_PIN_11 0281 * @arg @ref LL_GPIO_PIN_12 0282 * @arg @ref LL_GPIO_PIN_13 0283 * @arg @ref LL_GPIO_PIN_14 0284 * @arg @ref LL_GPIO_PIN_15 0285 * @param Mode This parameter can be one of the following values: 0286 * @arg @ref LL_GPIO_MODE_INPUT 0287 * @arg @ref LL_GPIO_MODE_OUTPUT 0288 * @arg @ref LL_GPIO_MODE_ALTERNATE 0289 * @arg @ref LL_GPIO_MODE_ANALOG 0290 * @retval None 0291 */ 0292 __STATIC_INLINE void LL_GPIO_SetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Mode) 0293 { 0294 MODIFY_REG(GPIOx->MODER, ((Pin * Pin) * GPIO_MODER_MODE0), ((Pin * Pin) * Mode)); 0295 } 0296 0297 /** 0298 * @brief Return gpio mode for a dedicated pin on dedicated port. 0299 * @note I/O mode can be Input mode, General purpose output, Alternate function mode or Analog. 0300 * @note Warning: only one pin can be passed as parameter. 0301 * @rmtoll MODER MODEy LL_GPIO_GetPinMode 0302 * @param GPIOx GPIO Port 0303 * @param Pin This parameter can be one of the following values: 0304 * @arg @ref LL_GPIO_PIN_0 0305 * @arg @ref LL_GPIO_PIN_1 0306 * @arg @ref LL_GPIO_PIN_2 0307 * @arg @ref LL_GPIO_PIN_3 0308 * @arg @ref LL_GPIO_PIN_4 0309 * @arg @ref LL_GPIO_PIN_5 0310 * @arg @ref LL_GPIO_PIN_6 0311 * @arg @ref LL_GPIO_PIN_7 0312 * @arg @ref LL_GPIO_PIN_8 0313 * @arg @ref LL_GPIO_PIN_9 0314 * @arg @ref LL_GPIO_PIN_10 0315 * @arg @ref LL_GPIO_PIN_11 0316 * @arg @ref LL_GPIO_PIN_12 0317 * @arg @ref LL_GPIO_PIN_13 0318 * @arg @ref LL_GPIO_PIN_14 0319 * @arg @ref LL_GPIO_PIN_15 0320 * @retval Returned value can be one of the following values: 0321 * @arg @ref LL_GPIO_MODE_INPUT 0322 * @arg @ref LL_GPIO_MODE_OUTPUT 0323 * @arg @ref LL_GPIO_MODE_ALTERNATE 0324 * @arg @ref LL_GPIO_MODE_ANALOG 0325 */ 0326 __STATIC_INLINE uint32_t LL_GPIO_GetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin) 0327 { 0328 return (uint32_t)(READ_BIT(GPIOx->MODER, ((Pin * Pin) * GPIO_MODER_MODE0)) / (Pin * Pin)); 0329 } 0330 0331 /** 0332 * @brief Configure gpio output type for several pins on dedicated port. 0333 * @note Output type as to be set when gpio pin is in output or 0334 * alternate modes. Possible type are Push-pull or Open-drain. 0335 * @rmtoll OTYPER OTy LL_GPIO_SetPinOutputType 0336 * @param GPIOx GPIO Port 0337 * @param PinMask This parameter can be a combination of the following values: 0338 * @arg @ref LL_GPIO_PIN_0 0339 * @arg @ref LL_GPIO_PIN_1 0340 * @arg @ref LL_GPIO_PIN_2 0341 * @arg @ref LL_GPIO_PIN_3 0342 * @arg @ref LL_GPIO_PIN_4 0343 * @arg @ref LL_GPIO_PIN_5 0344 * @arg @ref LL_GPIO_PIN_6 0345 * @arg @ref LL_GPIO_PIN_7 0346 * @arg @ref LL_GPIO_PIN_8 0347 * @arg @ref LL_GPIO_PIN_9 0348 * @arg @ref LL_GPIO_PIN_10 0349 * @arg @ref LL_GPIO_PIN_11 0350 * @arg @ref LL_GPIO_PIN_12 0351 * @arg @ref LL_GPIO_PIN_13 0352 * @arg @ref LL_GPIO_PIN_14 0353 * @arg @ref LL_GPIO_PIN_15 0354 * @arg @ref LL_GPIO_PIN_ALL 0355 * @param OutputType This parameter can be one of the following values: 0356 * @arg @ref LL_GPIO_OUTPUT_PUSHPULL 0357 * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN 0358 * @retval None 0359 */ 0360 __STATIC_INLINE void LL_GPIO_SetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t PinMask, uint32_t OutputType) 0361 { 0362 MODIFY_REG(GPIOx->OTYPER, PinMask, (PinMask * OutputType)); 0363 } 0364 0365 /** 0366 * @brief Return gpio output type for several pins on dedicated port. 0367 * @note Output type as to be set when gpio pin is in output or 0368 * alternate modes. Possible type are Push-pull or Open-drain. 0369 * @note Warning: only one pin can be passed as parameter. 0370 * @rmtoll OTYPER OTy LL_GPIO_GetPinOutputType 0371 * @param GPIOx GPIO Port 0372 * @param Pin This parameter can be one of the following values: 0373 * @arg @ref LL_GPIO_PIN_0 0374 * @arg @ref LL_GPIO_PIN_1 0375 * @arg @ref LL_GPIO_PIN_2 0376 * @arg @ref LL_GPIO_PIN_3 0377 * @arg @ref LL_GPIO_PIN_4 0378 * @arg @ref LL_GPIO_PIN_5 0379 * @arg @ref LL_GPIO_PIN_6 0380 * @arg @ref LL_GPIO_PIN_7 0381 * @arg @ref LL_GPIO_PIN_8 0382 * @arg @ref LL_GPIO_PIN_9 0383 * @arg @ref LL_GPIO_PIN_10 0384 * @arg @ref LL_GPIO_PIN_11 0385 * @arg @ref LL_GPIO_PIN_12 0386 * @arg @ref LL_GPIO_PIN_13 0387 * @arg @ref LL_GPIO_PIN_14 0388 * @arg @ref LL_GPIO_PIN_15 0389 * @arg @ref LL_GPIO_PIN_ALL 0390 * @retval Returned value can be one of the following values: 0391 * @arg @ref LL_GPIO_OUTPUT_PUSHPULL 0392 * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN 0393 */ 0394 __STATIC_INLINE uint32_t LL_GPIO_GetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t Pin) 0395 { 0396 return (uint32_t)(READ_BIT(GPIOx->OTYPER, Pin) / Pin); 0397 } 0398 0399 /** 0400 * @brief Configure gpio speed for a dedicated pin on dedicated port. 0401 * @note I/O speed can be Low, Medium, Fast or High speed. 0402 * @note Warning: only one pin can be passed as parameter. 0403 * @note Refer to datasheet for frequency specifications and the power 0404 * supply and load conditions for each speed. 0405 * @rmtoll OSPEEDR OSPEEDy LL_GPIO_SetPinSpeed 0406 * @param GPIOx GPIO Port 0407 * @param Pin This parameter can be one of the following values: 0408 * @arg @ref LL_GPIO_PIN_0 0409 * @arg @ref LL_GPIO_PIN_1 0410 * @arg @ref LL_GPIO_PIN_2 0411 * @arg @ref LL_GPIO_PIN_3 0412 * @arg @ref LL_GPIO_PIN_4 0413 * @arg @ref LL_GPIO_PIN_5 0414 * @arg @ref LL_GPIO_PIN_6 0415 * @arg @ref LL_GPIO_PIN_7 0416 * @arg @ref LL_GPIO_PIN_8 0417 * @arg @ref LL_GPIO_PIN_9 0418 * @arg @ref LL_GPIO_PIN_10 0419 * @arg @ref LL_GPIO_PIN_11 0420 * @arg @ref LL_GPIO_PIN_12 0421 * @arg @ref LL_GPIO_PIN_13 0422 * @arg @ref LL_GPIO_PIN_14 0423 * @arg @ref LL_GPIO_PIN_15 0424 * @param Speed This parameter can be one of the following values: 0425 * @arg @ref LL_GPIO_SPEED_FREQ_LOW 0426 * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM 0427 * @arg @ref LL_GPIO_SPEED_FREQ_HIGH 0428 * @arg @ref LL_GPIO_SPEED_FREQ_VERY_HIGH 0429 * @retval None 0430 */ 0431 __STATIC_INLINE void LL_GPIO_SetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Speed) 0432 { 0433 MODIFY_REG(GPIOx->OSPEEDR, ((Pin * Pin) * GPIO_OSPEEDR_OSPEED0), ((Pin * Pin) * Speed)); 0434 } 0435 0436 /** 0437 * @brief Return gpio speed for a dedicated pin on dedicated port. 0438 * @note I/O speed can be Low, Medium, Fast or High speed. 0439 * @note Warning: only one pin can be passed as parameter. 0440 * @note Refer to datasheet for frequency specifications and the power 0441 * supply and load conditions for each speed. 0442 * @rmtoll OSPEEDR OSPEEDy LL_GPIO_GetPinSpeed 0443 * @param GPIOx GPIO Port 0444 * @param Pin This parameter can be one of the following values: 0445 * @arg @ref LL_GPIO_PIN_0 0446 * @arg @ref LL_GPIO_PIN_1 0447 * @arg @ref LL_GPIO_PIN_2 0448 * @arg @ref LL_GPIO_PIN_3 0449 * @arg @ref LL_GPIO_PIN_4 0450 * @arg @ref LL_GPIO_PIN_5 0451 * @arg @ref LL_GPIO_PIN_6 0452 * @arg @ref LL_GPIO_PIN_7 0453 * @arg @ref LL_GPIO_PIN_8 0454 * @arg @ref LL_GPIO_PIN_9 0455 * @arg @ref LL_GPIO_PIN_10 0456 * @arg @ref LL_GPIO_PIN_11 0457 * @arg @ref LL_GPIO_PIN_12 0458 * @arg @ref LL_GPIO_PIN_13 0459 * @arg @ref LL_GPIO_PIN_14 0460 * @arg @ref LL_GPIO_PIN_15 0461 * @retval Returned value can be one of the following values: 0462 * @arg @ref LL_GPIO_SPEED_FREQ_LOW 0463 * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM 0464 * @arg @ref LL_GPIO_SPEED_FREQ_HIGH 0465 * @arg @ref LL_GPIO_SPEED_FREQ_VERY_HIGH 0466 */ 0467 __STATIC_INLINE uint32_t LL_GPIO_GetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin) 0468 { 0469 return (uint32_t)(READ_BIT(GPIOx->OSPEEDR, ((Pin * Pin) * GPIO_OSPEEDR_OSPEED0)) / (Pin * Pin)); 0470 } 0471 0472 /** 0473 * @brief Configure gpio pull-up or pull-down for a dedicated pin on a dedicated port. 0474 * @note Warning: only one pin can be passed as parameter. 0475 * @rmtoll PUPDR PUPDy LL_GPIO_SetPinPull 0476 * @param GPIOx GPIO Port 0477 * @param Pin This parameter can be one of the following values: 0478 * @arg @ref LL_GPIO_PIN_0 0479 * @arg @ref LL_GPIO_PIN_1 0480 * @arg @ref LL_GPIO_PIN_2 0481 * @arg @ref LL_GPIO_PIN_3 0482 * @arg @ref LL_GPIO_PIN_4 0483 * @arg @ref LL_GPIO_PIN_5 0484 * @arg @ref LL_GPIO_PIN_6 0485 * @arg @ref LL_GPIO_PIN_7 0486 * @arg @ref LL_GPIO_PIN_8 0487 * @arg @ref LL_GPIO_PIN_9 0488 * @arg @ref LL_GPIO_PIN_10 0489 * @arg @ref LL_GPIO_PIN_11 0490 * @arg @ref LL_GPIO_PIN_12 0491 * @arg @ref LL_GPIO_PIN_13 0492 * @arg @ref LL_GPIO_PIN_14 0493 * @arg @ref LL_GPIO_PIN_15 0494 * @param Pull This parameter can be one of the following values: 0495 * @arg @ref LL_GPIO_PULL_NO 0496 * @arg @ref LL_GPIO_PULL_UP 0497 * @arg @ref LL_GPIO_PULL_DOWN 0498 * @retval None 0499 */ 0500 __STATIC_INLINE void LL_GPIO_SetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Pull) 0501 { 0502 MODIFY_REG(GPIOx->PUPDR, ((Pin * Pin) * GPIO_PUPDR_PUPD0), ((Pin * Pin) * Pull)); 0503 } 0504 0505 /** 0506 * @brief Return gpio pull-up or pull-down for a dedicated pin on a dedicated port 0507 * @note Warning: only one pin can be passed as parameter. 0508 * @rmtoll PUPDR PUPDy LL_GPIO_GetPinPull 0509 * @param GPIOx GPIO Port 0510 * @param Pin This parameter can be one of the following values: 0511 * @arg @ref LL_GPIO_PIN_0 0512 * @arg @ref LL_GPIO_PIN_1 0513 * @arg @ref LL_GPIO_PIN_2 0514 * @arg @ref LL_GPIO_PIN_3 0515 * @arg @ref LL_GPIO_PIN_4 0516 * @arg @ref LL_GPIO_PIN_5 0517 * @arg @ref LL_GPIO_PIN_6 0518 * @arg @ref LL_GPIO_PIN_7 0519 * @arg @ref LL_GPIO_PIN_8 0520 * @arg @ref LL_GPIO_PIN_9 0521 * @arg @ref LL_GPIO_PIN_10 0522 * @arg @ref LL_GPIO_PIN_11 0523 * @arg @ref LL_GPIO_PIN_12 0524 * @arg @ref LL_GPIO_PIN_13 0525 * @arg @ref LL_GPIO_PIN_14 0526 * @arg @ref LL_GPIO_PIN_15 0527 * @retval Returned value can be one of the following values: 0528 * @arg @ref LL_GPIO_PULL_NO 0529 * @arg @ref LL_GPIO_PULL_UP 0530 * @arg @ref LL_GPIO_PULL_DOWN 0531 */ 0532 __STATIC_INLINE uint32_t LL_GPIO_GetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin) 0533 { 0534 return (uint32_t)(READ_BIT(GPIOx->PUPDR, ((Pin * Pin) * GPIO_PUPDR_PUPD0)) / (Pin * Pin)); 0535 } 0536 0537 /** 0538 * @brief Configure gpio alternate function of a dedicated pin from 0 to 7 for a dedicated port. 0539 * @note Possible values are from AF0 to AF15 depending on target. 0540 * @note Warning: only one pin can be passed as parameter. 0541 * @rmtoll AFRL AFSELy LL_GPIO_SetAFPin_0_7 0542 * @param GPIOx GPIO Port 0543 * @param Pin This parameter can be one of the following values: 0544 * @arg @ref LL_GPIO_PIN_0 0545 * @arg @ref LL_GPIO_PIN_1 0546 * @arg @ref LL_GPIO_PIN_2 0547 * @arg @ref LL_GPIO_PIN_3 0548 * @arg @ref LL_GPIO_PIN_4 0549 * @arg @ref LL_GPIO_PIN_5 0550 * @arg @ref LL_GPIO_PIN_6 0551 * @arg @ref LL_GPIO_PIN_7 0552 * @param Alternate This parameter can be one of the following values: 0553 * @arg @ref LL_GPIO_AF_0 0554 * @arg @ref LL_GPIO_AF_1 0555 * @arg @ref LL_GPIO_AF_2 0556 * @arg @ref LL_GPIO_AF_3 0557 * @arg @ref LL_GPIO_AF_4 0558 * @arg @ref LL_GPIO_AF_5 0559 * @arg @ref LL_GPIO_AF_6 0560 * @arg @ref LL_GPIO_AF_7 0561 * @arg @ref LL_GPIO_AF_8 0562 * @arg @ref LL_GPIO_AF_9 0563 * @arg @ref LL_GPIO_AF_10 0564 * @arg @ref LL_GPIO_AF_11 0565 * @arg @ref LL_GPIO_AF_12 0566 * @arg @ref LL_GPIO_AF_13 0567 * @arg @ref LL_GPIO_AF_14 0568 * @arg @ref LL_GPIO_AF_15 0569 * @retval None 0570 */ 0571 __STATIC_INLINE void LL_GPIO_SetAFPin_0_7(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Alternate) 0572 { 0573 MODIFY_REG(GPIOx->AFR[0], ((((Pin * Pin) * Pin) * Pin) * GPIO_AFRL_AFSEL0), 0574 ((((Pin * Pin) * Pin) * Pin) * Alternate)); 0575 } 0576 0577 /** 0578 * @brief Return gpio alternate function of a dedicated pin from 0 to 7 for a dedicated port. 0579 * @rmtoll AFRL AFSELy LL_GPIO_GetAFPin_0_7 0580 * @param GPIOx GPIO Port 0581 * @param Pin This parameter can be one of the following values: 0582 * @arg @ref LL_GPIO_PIN_0 0583 * @arg @ref LL_GPIO_PIN_1 0584 * @arg @ref LL_GPIO_PIN_2 0585 * @arg @ref LL_GPIO_PIN_3 0586 * @arg @ref LL_GPIO_PIN_4 0587 * @arg @ref LL_GPIO_PIN_5 0588 * @arg @ref LL_GPIO_PIN_6 0589 * @arg @ref LL_GPIO_PIN_7 0590 * @retval Returned value can be one of the following values: 0591 * @arg @ref LL_GPIO_AF_0 0592 * @arg @ref LL_GPIO_AF_1 0593 * @arg @ref LL_GPIO_AF_2 0594 * @arg @ref LL_GPIO_AF_3 0595 * @arg @ref LL_GPIO_AF_4 0596 * @arg @ref LL_GPIO_AF_5 0597 * @arg @ref LL_GPIO_AF_6 0598 * @arg @ref LL_GPIO_AF_7 0599 * @arg @ref LL_GPIO_AF_8 0600 * @arg @ref LL_GPIO_AF_9 0601 * @arg @ref LL_GPIO_AF_10 0602 * @arg @ref LL_GPIO_AF_11 0603 * @arg @ref LL_GPIO_AF_12 0604 * @arg @ref LL_GPIO_AF_13 0605 * @arg @ref LL_GPIO_AF_14 0606 * @arg @ref LL_GPIO_AF_15 0607 */ 0608 __STATIC_INLINE uint32_t LL_GPIO_GetAFPin_0_7(GPIO_TypeDef *GPIOx, uint32_t Pin) 0609 { 0610 return (uint32_t)(READ_BIT(GPIOx->AFR[0], 0611 ((((Pin * Pin) * Pin) * Pin) * GPIO_AFRL_AFSEL0)) / (((Pin * Pin) * Pin) * Pin)); 0612 } 0613 0614 /** 0615 * @brief Configure gpio alternate function of a dedicated pin from 8 to 15 for a dedicated port. 0616 * @note Possible values are from AF0 to AF15 depending on target. 0617 * @note Warning: only one pin can be passed as parameter. 0618 * @rmtoll AFRH AFSELy LL_GPIO_SetAFPin_8_15 0619 * @param GPIOx GPIO Port 0620 * @param Pin This parameter can be one of the following values: 0621 * @arg @ref LL_GPIO_PIN_8 0622 * @arg @ref LL_GPIO_PIN_9 0623 * @arg @ref LL_GPIO_PIN_10 0624 * @arg @ref LL_GPIO_PIN_11 0625 * @arg @ref LL_GPIO_PIN_12 0626 * @arg @ref LL_GPIO_PIN_13 0627 * @arg @ref LL_GPIO_PIN_14 0628 * @arg @ref LL_GPIO_PIN_15 0629 * @param Alternate This parameter can be one of the following values: 0630 * @arg @ref LL_GPIO_AF_0 0631 * @arg @ref LL_GPIO_AF_1 0632 * @arg @ref LL_GPIO_AF_2 0633 * @arg @ref LL_GPIO_AF_3 0634 * @arg @ref LL_GPIO_AF_4 0635 * @arg @ref LL_GPIO_AF_5 0636 * @arg @ref LL_GPIO_AF_6 0637 * @arg @ref LL_GPIO_AF_7 0638 * @arg @ref LL_GPIO_AF_8 0639 * @arg @ref LL_GPIO_AF_9 0640 * @arg @ref LL_GPIO_AF_10 0641 * @arg @ref LL_GPIO_AF_11 0642 * @arg @ref LL_GPIO_AF_12 0643 * @arg @ref LL_GPIO_AF_13 0644 * @arg @ref LL_GPIO_AF_14 0645 * @arg @ref LL_GPIO_AF_15 0646 * @retval None 0647 */ 0648 __STATIC_INLINE void LL_GPIO_SetAFPin_8_15(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Alternate) 0649 { 0650 MODIFY_REG(GPIOx->AFR[1], (((((Pin >> 8U) * (Pin >> 8U)) * (Pin >> 8U)) * (Pin >> 8U)) * GPIO_AFRH_AFSEL8), 0651 (((((Pin >> 8U) * (Pin >> 8U)) * (Pin >> 8U)) * (Pin >> 8U)) * Alternate)); 0652 } 0653 0654 /** 0655 * @brief Return gpio alternate function of a dedicated pin from 8 to 15 for a dedicated port. 0656 * @note Possible values are from AF0 to AF15 depending on target. 0657 * @rmtoll AFRH AFSELy LL_GPIO_GetAFPin_8_15 0658 * @param GPIOx GPIO Port 0659 * @param Pin This parameter can be one of the following values: 0660 * @arg @ref LL_GPIO_PIN_8 0661 * @arg @ref LL_GPIO_PIN_9 0662 * @arg @ref LL_GPIO_PIN_10 0663 * @arg @ref LL_GPIO_PIN_11 0664 * @arg @ref LL_GPIO_PIN_12 0665 * @arg @ref LL_GPIO_PIN_13 0666 * @arg @ref LL_GPIO_PIN_14 0667 * @arg @ref LL_GPIO_PIN_15 0668 * @retval Returned value can be one of the following values: 0669 * @arg @ref LL_GPIO_AF_0 0670 * @arg @ref LL_GPIO_AF_1 0671 * @arg @ref LL_GPIO_AF_2 0672 * @arg @ref LL_GPIO_AF_3 0673 * @arg @ref LL_GPIO_AF_4 0674 * @arg @ref LL_GPIO_AF_5 0675 * @arg @ref LL_GPIO_AF_6 0676 * @arg @ref LL_GPIO_AF_7 0677 * @arg @ref LL_GPIO_AF_8 0678 * @arg @ref LL_GPIO_AF_9 0679 * @arg @ref LL_GPIO_AF_10 0680 * @arg @ref LL_GPIO_AF_11 0681 * @arg @ref LL_GPIO_AF_12 0682 * @arg @ref LL_GPIO_AF_13 0683 * @arg @ref LL_GPIO_AF_14 0684 * @arg @ref LL_GPIO_AF_15 0685 */ 0686 __STATIC_INLINE uint32_t LL_GPIO_GetAFPin_8_15(GPIO_TypeDef *GPIOx, uint32_t Pin) 0687 { 0688 return (uint32_t)(READ_BIT(GPIOx->AFR[1], 0689 (((((Pin >> 8U) * (Pin >> 8U)) * (Pin >> 8U)) * (Pin >> 8U)) * GPIO_AFRH_AFSEL8)) / ((((Pin >> 8U) * 0690 (Pin >> 8U)) * (Pin >> 8U)) * (Pin >> 8U))); 0691 } 0692 0693 0694 /** 0695 * @brief Lock configuration of several pins for a dedicated port. 0696 * @note When the lock sequence has been applied on a port bit, the 0697 * value of this port bit can no longer be modified until the 0698 * next reset. 0699 * @note Each lock bit freezes a specific configuration register 0700 * (control and alternate function registers). 0701 * @rmtoll LCKR LCKK LL_GPIO_LockPin 0702 * @param GPIOx GPIO Port 0703 * @param PinMask This parameter can be a combination of the following values: 0704 * @arg @ref LL_GPIO_PIN_0 0705 * @arg @ref LL_GPIO_PIN_1 0706 * @arg @ref LL_GPIO_PIN_2 0707 * @arg @ref LL_GPIO_PIN_3 0708 * @arg @ref LL_GPIO_PIN_4 0709 * @arg @ref LL_GPIO_PIN_5 0710 * @arg @ref LL_GPIO_PIN_6 0711 * @arg @ref LL_GPIO_PIN_7 0712 * @arg @ref LL_GPIO_PIN_8 0713 * @arg @ref LL_GPIO_PIN_9 0714 * @arg @ref LL_GPIO_PIN_10 0715 * @arg @ref LL_GPIO_PIN_11 0716 * @arg @ref LL_GPIO_PIN_12 0717 * @arg @ref LL_GPIO_PIN_13 0718 * @arg @ref LL_GPIO_PIN_14 0719 * @arg @ref LL_GPIO_PIN_15 0720 * @arg @ref LL_GPIO_PIN_ALL 0721 * @retval None 0722 */ 0723 __STATIC_INLINE void LL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) 0724 { 0725 __IO uint32_t temp; 0726 WRITE_REG(GPIOx->LCKR, GPIO_LCKR_LCKK | PinMask); 0727 WRITE_REG(GPIOx->LCKR, PinMask); 0728 WRITE_REG(GPIOx->LCKR, GPIO_LCKR_LCKK | PinMask); 0729 /* Read LCKK register. This read is mandatory to complete key lock sequence */ 0730 temp = READ_REG(GPIOx->LCKR); 0731 (void) temp; 0732 } 0733 0734 /** 0735 * @brief Return 1 if all pins passed as parameter, of a dedicated port, are locked. else Return 0. 0736 * @rmtoll LCKR LCKy LL_GPIO_IsPinLocked 0737 * @param GPIOx GPIO Port 0738 * @param PinMask This parameter can be a combination of the following values: 0739 * @arg @ref LL_GPIO_PIN_0 0740 * @arg @ref LL_GPIO_PIN_1 0741 * @arg @ref LL_GPIO_PIN_2 0742 * @arg @ref LL_GPIO_PIN_3 0743 * @arg @ref LL_GPIO_PIN_4 0744 * @arg @ref LL_GPIO_PIN_5 0745 * @arg @ref LL_GPIO_PIN_6 0746 * @arg @ref LL_GPIO_PIN_7 0747 * @arg @ref LL_GPIO_PIN_8 0748 * @arg @ref LL_GPIO_PIN_9 0749 * @arg @ref LL_GPIO_PIN_10 0750 * @arg @ref LL_GPIO_PIN_11 0751 * @arg @ref LL_GPIO_PIN_12 0752 * @arg @ref LL_GPIO_PIN_13 0753 * @arg @ref LL_GPIO_PIN_14 0754 * @arg @ref LL_GPIO_PIN_15 0755 * @arg @ref LL_GPIO_PIN_ALL 0756 * @retval State of bit (1 or 0). 0757 */ 0758 __STATIC_INLINE uint32_t LL_GPIO_IsPinLocked(GPIO_TypeDef *GPIOx, uint32_t PinMask) 0759 { 0760 return ((READ_BIT(GPIOx->LCKR, PinMask) == (PinMask)) ? 1UL : 0UL); 0761 } 0762 0763 /** 0764 * @brief Return 1 if one of the pin of a dedicated port is locked. else return 0. 0765 * @rmtoll LCKR LCKK LL_GPIO_IsAnyPinLocked 0766 * @param GPIOx GPIO Port 0767 * @retval State of bit (1 or 0). 0768 */ 0769 __STATIC_INLINE uint32_t LL_GPIO_IsAnyPinLocked(GPIO_TypeDef *GPIOx) 0770 { 0771 return ((READ_BIT(GPIOx->LCKR, GPIO_LCKR_LCKK) == (GPIO_LCKR_LCKK)) ? 1UL : 0UL); 0772 } 0773 0774 /** 0775 * @} 0776 */ 0777 0778 /** @defgroup GPIO_LL_EF_Data_Access Data Access 0779 * @ingroup RTEMSBSPsARMSTM32H7 0780 * @{ 0781 */ 0782 0783 /** 0784 * @brief Return full input data register value for a dedicated port. 0785 * @rmtoll IDR IDy LL_GPIO_ReadInputPort 0786 * @param GPIOx GPIO Port 0787 * @retval Input data register value of port 0788 */ 0789 __STATIC_INLINE uint32_t LL_GPIO_ReadInputPort(GPIO_TypeDef *GPIOx) 0790 { 0791 return (uint32_t)(READ_REG(GPIOx->IDR)); 0792 } 0793 0794 /** 0795 * @brief Return if input data level for several pins of dedicated port is high or low. 0796 * @rmtoll IDR IDy LL_GPIO_IsInputPinSet 0797 * @param GPIOx GPIO Port 0798 * @param PinMask This parameter can be a combination of the following values: 0799 * @arg @ref LL_GPIO_PIN_0 0800 * @arg @ref LL_GPIO_PIN_1 0801 * @arg @ref LL_GPIO_PIN_2 0802 * @arg @ref LL_GPIO_PIN_3 0803 * @arg @ref LL_GPIO_PIN_4 0804 * @arg @ref LL_GPIO_PIN_5 0805 * @arg @ref LL_GPIO_PIN_6 0806 * @arg @ref LL_GPIO_PIN_7 0807 * @arg @ref LL_GPIO_PIN_8 0808 * @arg @ref LL_GPIO_PIN_9 0809 * @arg @ref LL_GPIO_PIN_10 0810 * @arg @ref LL_GPIO_PIN_11 0811 * @arg @ref LL_GPIO_PIN_12 0812 * @arg @ref LL_GPIO_PIN_13 0813 * @arg @ref LL_GPIO_PIN_14 0814 * @arg @ref LL_GPIO_PIN_15 0815 * @arg @ref LL_GPIO_PIN_ALL 0816 * @retval State of bit (1 or 0). 0817 */ 0818 __STATIC_INLINE uint32_t LL_GPIO_IsInputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask) 0819 { 0820 return ((READ_BIT(GPIOx->IDR, PinMask) == (PinMask)) ? 1UL : 0UL); 0821 } 0822 0823 /** 0824 * @brief Write output data register for the port. 0825 * @rmtoll ODR ODy LL_GPIO_WriteOutputPort 0826 * @param GPIOx GPIO Port 0827 * @param PortValue Level value for each pin of the port 0828 * @retval None 0829 */ 0830 __STATIC_INLINE void LL_GPIO_WriteOutputPort(GPIO_TypeDef *GPIOx, uint32_t PortValue) 0831 { 0832 WRITE_REG(GPIOx->ODR, PortValue); 0833 } 0834 0835 /** 0836 * @brief Return full output data register value for a dedicated port. 0837 * @rmtoll ODR ODy LL_GPIO_ReadOutputPort 0838 * @param GPIOx GPIO Port 0839 * @retval Output data register value of port 0840 */ 0841 __STATIC_INLINE uint32_t LL_GPIO_ReadOutputPort(GPIO_TypeDef *GPIOx) 0842 { 0843 return (uint32_t)(READ_REG(GPIOx->ODR)); 0844 } 0845 0846 /** 0847 * @brief Return if input data level for several pins of dedicated port is high or low. 0848 * @rmtoll ODR ODy LL_GPIO_IsOutputPinSet 0849 * @param GPIOx GPIO Port 0850 * @param PinMask This parameter can be a combination of the following values: 0851 * @arg @ref LL_GPIO_PIN_0 0852 * @arg @ref LL_GPIO_PIN_1 0853 * @arg @ref LL_GPIO_PIN_2 0854 * @arg @ref LL_GPIO_PIN_3 0855 * @arg @ref LL_GPIO_PIN_4 0856 * @arg @ref LL_GPIO_PIN_5 0857 * @arg @ref LL_GPIO_PIN_6 0858 * @arg @ref LL_GPIO_PIN_7 0859 * @arg @ref LL_GPIO_PIN_8 0860 * @arg @ref LL_GPIO_PIN_9 0861 * @arg @ref LL_GPIO_PIN_10 0862 * @arg @ref LL_GPIO_PIN_11 0863 * @arg @ref LL_GPIO_PIN_12 0864 * @arg @ref LL_GPIO_PIN_13 0865 * @arg @ref LL_GPIO_PIN_14 0866 * @arg @ref LL_GPIO_PIN_15 0867 * @arg @ref LL_GPIO_PIN_ALL 0868 * @retval State of bit (1 or 0). 0869 */ 0870 __STATIC_INLINE uint32_t LL_GPIO_IsOutputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask) 0871 { 0872 return ((READ_BIT(GPIOx->ODR, PinMask) == (PinMask)) ? 1UL : 0UL); 0873 } 0874 0875 /** 0876 * @brief Set several pins to high level on dedicated gpio port. 0877 * @rmtoll BSRR BSy LL_GPIO_SetOutputPin 0878 * @param GPIOx GPIO Port 0879 * @param PinMask This parameter can be a combination of the following values: 0880 * @arg @ref LL_GPIO_PIN_0 0881 * @arg @ref LL_GPIO_PIN_1 0882 * @arg @ref LL_GPIO_PIN_2 0883 * @arg @ref LL_GPIO_PIN_3 0884 * @arg @ref LL_GPIO_PIN_4 0885 * @arg @ref LL_GPIO_PIN_5 0886 * @arg @ref LL_GPIO_PIN_6 0887 * @arg @ref LL_GPIO_PIN_7 0888 * @arg @ref LL_GPIO_PIN_8 0889 * @arg @ref LL_GPIO_PIN_9 0890 * @arg @ref LL_GPIO_PIN_10 0891 * @arg @ref LL_GPIO_PIN_11 0892 * @arg @ref LL_GPIO_PIN_12 0893 * @arg @ref LL_GPIO_PIN_13 0894 * @arg @ref LL_GPIO_PIN_14 0895 * @arg @ref LL_GPIO_PIN_15 0896 * @arg @ref LL_GPIO_PIN_ALL 0897 * @retval None 0898 */ 0899 __STATIC_INLINE void LL_GPIO_SetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) 0900 { 0901 WRITE_REG(GPIOx->BSRR, PinMask); 0902 } 0903 0904 /** 0905 * @brief Set several pins to low level on dedicated gpio port. 0906 * @rmtoll BSRR BRy LL_GPIO_ResetOutputPin 0907 * @param GPIOx GPIO Port 0908 * @param PinMask This parameter can be a combination of the following values: 0909 * @arg @ref LL_GPIO_PIN_0 0910 * @arg @ref LL_GPIO_PIN_1 0911 * @arg @ref LL_GPIO_PIN_2 0912 * @arg @ref LL_GPIO_PIN_3 0913 * @arg @ref LL_GPIO_PIN_4 0914 * @arg @ref LL_GPIO_PIN_5 0915 * @arg @ref LL_GPIO_PIN_6 0916 * @arg @ref LL_GPIO_PIN_7 0917 * @arg @ref LL_GPIO_PIN_8 0918 * @arg @ref LL_GPIO_PIN_9 0919 * @arg @ref LL_GPIO_PIN_10 0920 * @arg @ref LL_GPIO_PIN_11 0921 * @arg @ref LL_GPIO_PIN_12 0922 * @arg @ref LL_GPIO_PIN_13 0923 * @arg @ref LL_GPIO_PIN_14 0924 * @arg @ref LL_GPIO_PIN_15 0925 * @arg @ref LL_GPIO_PIN_ALL 0926 * @retval None 0927 */ 0928 __STATIC_INLINE void LL_GPIO_ResetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) 0929 { 0930 WRITE_REG(GPIOx->BSRR, PinMask << 16U); 0931 } 0932 0933 /** 0934 * @brief Toggle data value for several pin of dedicated port. 0935 * @rmtoll ODR ODy LL_GPIO_TogglePin 0936 * @param GPIOx GPIO Port 0937 * @param PinMask This parameter can be a combination of the following values: 0938 * @arg @ref LL_GPIO_PIN_0 0939 * @arg @ref LL_GPIO_PIN_1 0940 * @arg @ref LL_GPIO_PIN_2 0941 * @arg @ref LL_GPIO_PIN_3 0942 * @arg @ref LL_GPIO_PIN_4 0943 * @arg @ref LL_GPIO_PIN_5 0944 * @arg @ref LL_GPIO_PIN_6 0945 * @arg @ref LL_GPIO_PIN_7 0946 * @arg @ref LL_GPIO_PIN_8 0947 * @arg @ref LL_GPIO_PIN_9 0948 * @arg @ref LL_GPIO_PIN_10 0949 * @arg @ref LL_GPIO_PIN_11 0950 * @arg @ref LL_GPIO_PIN_12 0951 * @arg @ref LL_GPIO_PIN_13 0952 * @arg @ref LL_GPIO_PIN_14 0953 * @arg @ref LL_GPIO_PIN_15 0954 * @arg @ref LL_GPIO_PIN_ALL 0955 * @retval None 0956 */ 0957 __STATIC_INLINE void LL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint32_t PinMask) 0958 { 0959 uint32_t odr = READ_REG(GPIOx->ODR); 0960 WRITE_REG(GPIOx->BSRR, ((odr & PinMask) << 16u) | (~odr & PinMask)); 0961 } 0962 0963 /** 0964 * @} 0965 */ 0966 0967 #if defined(USE_FULL_LL_DRIVER) || defined(__rtems__) 0968 /** @defgroup GPIO_LL_EF_Init Initialization and de-initialization functions 0969 * @ingroup RTEMSBSPsARMSTM32H7 0970 * @{ 0971 */ 0972 0973 ErrorStatus LL_GPIO_DeInit(GPIO_TypeDef *GPIOx); 0974 ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStruct); 0975 void LL_GPIO_StructInit(LL_GPIO_InitTypeDef *GPIO_InitStruct); 0976 0977 /** 0978 * @} 0979 */ 0980 #endif /* USE_FULL_LL_DRIVER */ 0981 0982 /** 0983 * @} 0984 */ 0985 0986 /** 0987 * @} 0988 */ 0989 0990 #endif /*defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) || defined (GPIOH) || defined (GPIOI) || defined (GPIOJ) || defined (GPIOK) */ 0991 /** 0992 * @} 0993 */ 0994 0995 #ifdef __cplusplus 0996 } 0997 #endif 0998 0999 #endif /* STM32H7xx_LL_GPIO_H */ 1000
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |