TUKS MCU Introductory course / TUKS-COURSE-2-LED
Committer:
elmot
Date:
Fri Feb 24 21:13:56 2017 +0000
Revision:
1:d0dfbce63a89
Ready-to-copy

Who changed what in which revision?

UserRevisionLine numberNew contents of line
elmot 1:d0dfbce63a89 1 /**
elmot 1:d0dfbce63a89 2 ******************************************************************************
elmot 1:d0dfbce63a89 3 * @file stm32l4xx_ll_gpio.h
elmot 1:d0dfbce63a89 4 * @author MCD Application Team
elmot 1:d0dfbce63a89 5 * @version V1.5.1
elmot 1:d0dfbce63a89 6 * @date 31-May-2016
elmot 1:d0dfbce63a89 7 * @brief Header file of GPIO LL module.
elmot 1:d0dfbce63a89 8 ******************************************************************************
elmot 1:d0dfbce63a89 9 * @attention
elmot 1:d0dfbce63a89 10 *
elmot 1:d0dfbce63a89 11 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
elmot 1:d0dfbce63a89 12 *
elmot 1:d0dfbce63a89 13 * Redistribution and use in source and binary forms, with or without modification,
elmot 1:d0dfbce63a89 14 * are permitted provided that the following conditions are met:
elmot 1:d0dfbce63a89 15 * 1. Redistributions of source code must retain the above copyright notice,
elmot 1:d0dfbce63a89 16 * this list of conditions and the following disclaimer.
elmot 1:d0dfbce63a89 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
elmot 1:d0dfbce63a89 18 * this list of conditions and the following disclaimer in the documentation
elmot 1:d0dfbce63a89 19 * and/or other materials provided with the distribution.
elmot 1:d0dfbce63a89 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
elmot 1:d0dfbce63a89 21 * may be used to endorse or promote products derived from this software
elmot 1:d0dfbce63a89 22 * without specific prior written permission.
elmot 1:d0dfbce63a89 23 *
elmot 1:d0dfbce63a89 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
elmot 1:d0dfbce63a89 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
elmot 1:d0dfbce63a89 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
elmot 1:d0dfbce63a89 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
elmot 1:d0dfbce63a89 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
elmot 1:d0dfbce63a89 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
elmot 1:d0dfbce63a89 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
elmot 1:d0dfbce63a89 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
elmot 1:d0dfbce63a89 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
elmot 1:d0dfbce63a89 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
elmot 1:d0dfbce63a89 34 *
elmot 1:d0dfbce63a89 35 ******************************************************************************
elmot 1:d0dfbce63a89 36 */
elmot 1:d0dfbce63a89 37
elmot 1:d0dfbce63a89 38 /* Define to prevent recursive inclusion -------------------------------------*/
elmot 1:d0dfbce63a89 39 #ifndef __STM32L4xx_LL_GPIO_H
elmot 1:d0dfbce63a89 40 #define __STM32L4xx_LL_GPIO_H
elmot 1:d0dfbce63a89 41
elmot 1:d0dfbce63a89 42 #ifdef __cplusplus
elmot 1:d0dfbce63a89 43 extern "C" {
elmot 1:d0dfbce63a89 44 #endif
elmot 1:d0dfbce63a89 45
elmot 1:d0dfbce63a89 46 /* Includes ------------------------------------------------------------------*/
elmot 1:d0dfbce63a89 47 #include "stm32l4xx.h"
elmot 1:d0dfbce63a89 48
elmot 1:d0dfbce63a89 49 /** @addtogroup STM32L4xx_LL_Driver
elmot 1:d0dfbce63a89 50 * @{
elmot 1:d0dfbce63a89 51 */
elmot 1:d0dfbce63a89 52
elmot 1:d0dfbce63a89 53 #if defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) || defined (GPIOH) || defined (GPIOI)
elmot 1:d0dfbce63a89 54
elmot 1:d0dfbce63a89 55 /** @defgroup GPIO_LL GPIO
elmot 1:d0dfbce63a89 56 * @{
elmot 1:d0dfbce63a89 57 */
elmot 1:d0dfbce63a89 58
elmot 1:d0dfbce63a89 59 /* Private types -------------------------------------------------------------*/
elmot 1:d0dfbce63a89 60 /* Private variables ---------------------------------------------------------*/
elmot 1:d0dfbce63a89 61 /* Private constants ---------------------------------------------------------*/
elmot 1:d0dfbce63a89 62 /* Private macros ------------------------------------------------------------*/
elmot 1:d0dfbce63a89 63 #if defined(USE_FULL_LL_DRIVER)
elmot 1:d0dfbce63a89 64 /** @defgroup GPIO_LL_Private_Macros GPIO Private Macros
elmot 1:d0dfbce63a89 65 * @{
elmot 1:d0dfbce63a89 66 */
elmot 1:d0dfbce63a89 67
elmot 1:d0dfbce63a89 68 /**
elmot 1:d0dfbce63a89 69 * @}
elmot 1:d0dfbce63a89 70 */
elmot 1:d0dfbce63a89 71 #endif /*USE_FULL_LL_DRIVER*/
elmot 1:d0dfbce63a89 72
elmot 1:d0dfbce63a89 73 /* Exported types ------------------------------------------------------------*/
elmot 1:d0dfbce63a89 74 #if defined(USE_FULL_LL_DRIVER)
elmot 1:d0dfbce63a89 75 /** @defgroup GPIO_LL_ES_INIT GPIO Exported Init structures
elmot 1:d0dfbce63a89 76 * @{
elmot 1:d0dfbce63a89 77 */
elmot 1:d0dfbce63a89 78
elmot 1:d0dfbce63a89 79 /**
elmot 1:d0dfbce63a89 80 * @brief LL GPIO Init Structure definition
elmot 1:d0dfbce63a89 81 */
elmot 1:d0dfbce63a89 82 typedef struct
elmot 1:d0dfbce63a89 83 {
elmot 1:d0dfbce63a89 84 uint32_t Pin; /*!< Specifies the GPIO pins to be configured.
elmot 1:d0dfbce63a89 85 This parameter can be any value of @ref GPIO_LL_EC_PIN */
elmot 1:d0dfbce63a89 86
elmot 1:d0dfbce63a89 87 uint32_t Mode; /*!< Specifies the operating mode for the selected pins.
elmot 1:d0dfbce63a89 88 This parameter can be a value of @ref GPIO_LL_EC_MODE.
elmot 1:d0dfbce63a89 89
elmot 1:d0dfbce63a89 90 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinMode().*/
elmot 1:d0dfbce63a89 91
elmot 1:d0dfbce63a89 92 uint32_t Speed; /*!< Specifies the speed for the selected pins.
elmot 1:d0dfbce63a89 93 This parameter can be a value of @ref GPIO_LL_EC_SPEED.
elmot 1:d0dfbce63a89 94
elmot 1:d0dfbce63a89 95 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinSpeed().*/
elmot 1:d0dfbce63a89 96
elmot 1:d0dfbce63a89 97 uint32_t OutputType; /*!< Specifies the operating output type for the selected pins.
elmot 1:d0dfbce63a89 98 This parameter can be a value of @ref GPIO_LL_EC_OUTPUT.
elmot 1:d0dfbce63a89 99
elmot 1:d0dfbce63a89 100 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinOutputType().*/
elmot 1:d0dfbce63a89 101
elmot 1:d0dfbce63a89 102 uint32_t Pull; /*!< Specifies the operating Pull-up/Pull down for the selected pins.
elmot 1:d0dfbce63a89 103 This parameter can be a value of @ref GPIO_LL_EC_PULL.
elmot 1:d0dfbce63a89 104
elmot 1:d0dfbce63a89 105 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinPull().*/
elmot 1:d0dfbce63a89 106
elmot 1:d0dfbce63a89 107 uint32_t Alternate; /*!< Specifies the Peripheral to be connected to the selected pins.
elmot 1:d0dfbce63a89 108 This parameter can be a value of @ref GPIO_LL_EC_AF.
elmot 1:d0dfbce63a89 109
elmot 1:d0dfbce63a89 110 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetAFPin_0_7() and LL_GPIO_SetAFPin_8_15().*/
elmot 1:d0dfbce63a89 111 } LL_GPIO_InitTypeDef;
elmot 1:d0dfbce63a89 112
elmot 1:d0dfbce63a89 113 /**
elmot 1:d0dfbce63a89 114 * @}
elmot 1:d0dfbce63a89 115 */
elmot 1:d0dfbce63a89 116 #endif /* USE_FULL_LL_DRIVER */
elmot 1:d0dfbce63a89 117
elmot 1:d0dfbce63a89 118 /* Exported constants --------------------------------------------------------*/
elmot 1:d0dfbce63a89 119 /** @defgroup GPIO_LL_Exported_Constants GPIO Exported Constants
elmot 1:d0dfbce63a89 120 * @{
elmot 1:d0dfbce63a89 121 */
elmot 1:d0dfbce63a89 122
elmot 1:d0dfbce63a89 123 /** @defgroup GPIO_LL_EC_PIN PIN
elmot 1:d0dfbce63a89 124 * @{
elmot 1:d0dfbce63a89 125 */
elmot 1:d0dfbce63a89 126 #define LL_GPIO_PIN_0 GPIO_BSRR_BS0 /*!< Select pin 0 */
elmot 1:d0dfbce63a89 127 #define LL_GPIO_PIN_1 GPIO_BSRR_BS1 /*!< Select pin 1 */
elmot 1:d0dfbce63a89 128 #define LL_GPIO_PIN_2 GPIO_BSRR_BS2 /*!< Select pin 2 */
elmot 1:d0dfbce63a89 129 #define LL_GPIO_PIN_3 GPIO_BSRR_BS3 /*!< Select pin 3 */
elmot 1:d0dfbce63a89 130 #define LL_GPIO_PIN_4 GPIO_BSRR_BS4 /*!< Select pin 4 */
elmot 1:d0dfbce63a89 131 #define LL_GPIO_PIN_5 GPIO_BSRR_BS5 /*!< Select pin 5 */
elmot 1:d0dfbce63a89 132 #define LL_GPIO_PIN_6 GPIO_BSRR_BS6 /*!< Select pin 6 */
elmot 1:d0dfbce63a89 133 #define LL_GPIO_PIN_7 GPIO_BSRR_BS7 /*!< Select pin 7 */
elmot 1:d0dfbce63a89 134 #define LL_GPIO_PIN_8 GPIO_BSRR_BS8 /*!< Select pin 8 */
elmot 1:d0dfbce63a89 135 #define LL_GPIO_PIN_9 GPIO_BSRR_BS9 /*!< Select pin 9 */
elmot 1:d0dfbce63a89 136 #define LL_GPIO_PIN_10 GPIO_BSRR_BS10 /*!< Select pin 10 */
elmot 1:d0dfbce63a89 137 #define LL_GPIO_PIN_11 GPIO_BSRR_BS11 /*!< Select pin 11 */
elmot 1:d0dfbce63a89 138 #define LL_GPIO_PIN_12 GPIO_BSRR_BS12 /*!< Select pin 12 */
elmot 1:d0dfbce63a89 139 #define LL_GPIO_PIN_13 GPIO_BSRR_BS13 /*!< Select pin 13 */
elmot 1:d0dfbce63a89 140 #define LL_GPIO_PIN_14 GPIO_BSRR_BS14 /*!< Select pin 14 */
elmot 1:d0dfbce63a89 141 #define LL_GPIO_PIN_15 GPIO_BSRR_BS15 /*!< Select pin 15 */
elmot 1:d0dfbce63a89 142 #define LL_GPIO_PIN_ALL (GPIO_BSRR_BS0 | GPIO_BSRR_BS1 | GPIO_BSRR_BS2 | \
elmot 1:d0dfbce63a89 143 GPIO_BSRR_BS3 | GPIO_BSRR_BS4 | GPIO_BSRR_BS5 | \
elmot 1:d0dfbce63a89 144 GPIO_BSRR_BS6 | GPIO_BSRR_BS7 | GPIO_BSRR_BS8 | \
elmot 1:d0dfbce63a89 145 GPIO_BSRR_BS9 | GPIO_BSRR_BS10 | GPIO_BSRR_BS11 | \
elmot 1:d0dfbce63a89 146 GPIO_BSRR_BS12 | GPIO_BSRR_BS13 | GPIO_BSRR_BS14 | \
elmot 1:d0dfbce63a89 147 GPIO_BSRR_BS15) /*!< Select all pins */
elmot 1:d0dfbce63a89 148 /**
elmot 1:d0dfbce63a89 149 * @}
elmot 1:d0dfbce63a89 150 */
elmot 1:d0dfbce63a89 151
elmot 1:d0dfbce63a89 152 /** @defgroup GPIO_LL_EC_MODE Mode
elmot 1:d0dfbce63a89 153 * @{
elmot 1:d0dfbce63a89 154 */
elmot 1:d0dfbce63a89 155 #define LL_GPIO_MODE_INPUT ((uint32_t)0x00000000U) /*!< Select input mode */
elmot 1:d0dfbce63a89 156 #define LL_GPIO_MODE_OUTPUT GPIO_MODER_MODE0_0 /*!< Select output mode */
elmot 1:d0dfbce63a89 157 #define LL_GPIO_MODE_ALTERNATE GPIO_MODER_MODE0_1 /*!< Select alternate function mode */
elmot 1:d0dfbce63a89 158 #define LL_GPIO_MODE_ANALOG GPIO_MODER_MODE0 /*!< Select analog mode */
elmot 1:d0dfbce63a89 159 /**
elmot 1:d0dfbce63a89 160 * @}
elmot 1:d0dfbce63a89 161 */
elmot 1:d0dfbce63a89 162
elmot 1:d0dfbce63a89 163 /** @defgroup GPIO_LL_EC_OUTPUT Output Type
elmot 1:d0dfbce63a89 164 * @{
elmot 1:d0dfbce63a89 165 */
elmot 1:d0dfbce63a89 166 #define LL_GPIO_OUTPUT_PUSHPULL ((uint32_t)0x00000000U) /*!< Select push-pull as output type */
elmot 1:d0dfbce63a89 167 #define LL_GPIO_OUTPUT_OPENDRAIN GPIO_OTYPER_OT0 /*!< Select open-drain as output type */
elmot 1:d0dfbce63a89 168 /**
elmot 1:d0dfbce63a89 169 * @}
elmot 1:d0dfbce63a89 170 */
elmot 1:d0dfbce63a89 171
elmot 1:d0dfbce63a89 172 /** @defgroup GPIO_LL_EC_SPEED Output Speed
elmot 1:d0dfbce63a89 173 * @{
elmot 1:d0dfbce63a89 174 */
elmot 1:d0dfbce63a89 175 #define LL_GPIO_SPEED_FREQ_LOW ((uint32_t)0x00000000U) /*!< Select I/O low output speed */
elmot 1:d0dfbce63a89 176 #define LL_GPIO_SPEED_FREQ_MEDIUM GPIO_OSPEEDR_OSPEED0_0 /*!< Select I/O medium output speed */
elmot 1:d0dfbce63a89 177 #define LL_GPIO_SPEED_FREQ_HIGH GPIO_OSPEEDR_OSPEED0_1 /*!< Select I/O fast output speed */
elmot 1:d0dfbce63a89 178 #define LL_GPIO_SPEED_FREQ_VERY_HIGH GPIO_OSPEEDR_OSPEED0 /*!< Select I/O high output speed */
elmot 1:d0dfbce63a89 179 /**
elmot 1:d0dfbce63a89 180 * @}
elmot 1:d0dfbce63a89 181 */
elmot 1:d0dfbce63a89 182 #define LL_GPIO_SPEED_LOW LL_GPIO_SPEED_FREQ_LOW
elmot 1:d0dfbce63a89 183 #define LL_GPIO_SPEED_MEDIUM LL_GPIO_SPEED_FREQ_MEDIUM
elmot 1:d0dfbce63a89 184 #define LL_GPIO_SPEED_FAST LL_GPIO_SPEED_FREQ_HIGH
elmot 1:d0dfbce63a89 185 #define LL_GPIO_SPEED_HIGH LL_GPIO_SPEED_FREQ_VERY_HIGH
elmot 1:d0dfbce63a89 186
elmot 1:d0dfbce63a89 187
elmot 1:d0dfbce63a89 188 /** @defgroup GPIO_LL_EC_PULL Pull Up Pull Down
elmot 1:d0dfbce63a89 189 * @{
elmot 1:d0dfbce63a89 190 */
elmot 1:d0dfbce63a89 191 #define LL_GPIO_PULL_NO ((uint32_t)0x00000000U) /*!< Select I/O no pull */
elmot 1:d0dfbce63a89 192 #define LL_GPIO_PULL_UP GPIO_PUPDR_PUPD0_0 /*!< Select I/O pull up */
elmot 1:d0dfbce63a89 193 #define LL_GPIO_PULL_DOWN GPIO_PUPDR_PUPD0_1 /*!< Select I/O pull down */
elmot 1:d0dfbce63a89 194 /**
elmot 1:d0dfbce63a89 195 * @}
elmot 1:d0dfbce63a89 196 */
elmot 1:d0dfbce63a89 197
elmot 1:d0dfbce63a89 198 /** @defgroup GPIO_LL_EC_AF Alternate Function
elmot 1:d0dfbce63a89 199 * @{
elmot 1:d0dfbce63a89 200 */
elmot 1:d0dfbce63a89 201 #define LL_GPIO_AF_0 ((uint32_t)0x0000000U) /*!< Select alternate function 0 */
elmot 1:d0dfbce63a89 202 #define LL_GPIO_AF_1 ((uint32_t)0x0000001U) /*!< Select alternate function 1 */
elmot 1:d0dfbce63a89 203 #define LL_GPIO_AF_2 ((uint32_t)0x0000002U) /*!< Select alternate function 2 */
elmot 1:d0dfbce63a89 204 #define LL_GPIO_AF_3 ((uint32_t)0x0000003U) /*!< Select alternate function 3 */
elmot 1:d0dfbce63a89 205 #define LL_GPIO_AF_4 ((uint32_t)0x0000004U) /*!< Select alternate function 4 */
elmot 1:d0dfbce63a89 206 #define LL_GPIO_AF_5 ((uint32_t)0x0000005U) /*!< Select alternate function 5 */
elmot 1:d0dfbce63a89 207 #define LL_GPIO_AF_6 ((uint32_t)0x0000006U) /*!< Select alternate function 6 */
elmot 1:d0dfbce63a89 208 #define LL_GPIO_AF_7 ((uint32_t)0x0000007U) /*!< Select alternate function 7 */
elmot 1:d0dfbce63a89 209 #define LL_GPIO_AF_8 ((uint32_t)0x0000008U) /*!< Select alternate function 8 */
elmot 1:d0dfbce63a89 210 #define LL_GPIO_AF_9 ((uint32_t)0x0000009U) /*!< Select alternate function 9 */
elmot 1:d0dfbce63a89 211 #define LL_GPIO_AF_10 ((uint32_t)0x000000AU) /*!< Select alternate function 10 */
elmot 1:d0dfbce63a89 212 #define LL_GPIO_AF_11 ((uint32_t)0x000000BU) /*!< Select alternate function 11 */
elmot 1:d0dfbce63a89 213 #define LL_GPIO_AF_12 ((uint32_t)0x000000CU) /*!< Select alternate function 12 */
elmot 1:d0dfbce63a89 214 #define LL_GPIO_AF_13 ((uint32_t)0x000000DU) /*!< Select alternate function 13 */
elmot 1:d0dfbce63a89 215 #define LL_GPIO_AF_14 ((uint32_t)0x000000EU) /*!< Select alternate function 14 */
elmot 1:d0dfbce63a89 216 #define LL_GPIO_AF_15 ((uint32_t)0x000000FU) /*!< Select alternate function 15 */
elmot 1:d0dfbce63a89 217 /**
elmot 1:d0dfbce63a89 218 * @}
elmot 1:d0dfbce63a89 219 */
elmot 1:d0dfbce63a89 220
elmot 1:d0dfbce63a89 221 /**
elmot 1:d0dfbce63a89 222 * @}
elmot 1:d0dfbce63a89 223 */
elmot 1:d0dfbce63a89 224
elmot 1:d0dfbce63a89 225 /* Exported macro ------------------------------------------------------------*/
elmot 1:d0dfbce63a89 226 /** @defgroup GPIO_LL_Exported_Macros GPIO Exported Macros
elmot 1:d0dfbce63a89 227 * @{
elmot 1:d0dfbce63a89 228 */
elmot 1:d0dfbce63a89 229
elmot 1:d0dfbce63a89 230 /** @defgroup GPIO_LL_EM_WRITE_READ Common Write and read registers Macros
elmot 1:d0dfbce63a89 231 * @{
elmot 1:d0dfbce63a89 232 */
elmot 1:d0dfbce63a89 233
elmot 1:d0dfbce63a89 234 /**
elmot 1:d0dfbce63a89 235 * @brief Write a value in GPIO register
elmot 1:d0dfbce63a89 236 * @param __INSTANCE__ GPIO Instance
elmot 1:d0dfbce63a89 237 * @param __REG__ Register to be written
elmot 1:d0dfbce63a89 238 * @param __VALUE__ Value to be written in the register
elmot 1:d0dfbce63a89 239 * @retval None
elmot 1:d0dfbce63a89 240 */
elmot 1:d0dfbce63a89 241 #define LL_GPIO_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
elmot 1:d0dfbce63a89 242
elmot 1:d0dfbce63a89 243 /**
elmot 1:d0dfbce63a89 244 * @brief Read a value in GPIO register
elmot 1:d0dfbce63a89 245 * @param __INSTANCE__ GPIO Instance
elmot 1:d0dfbce63a89 246 * @param __REG__ Register to be read
elmot 1:d0dfbce63a89 247 * @retval Register value
elmot 1:d0dfbce63a89 248 */
elmot 1:d0dfbce63a89 249 #define LL_GPIO_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
elmot 1:d0dfbce63a89 250 /**
elmot 1:d0dfbce63a89 251 * @}
elmot 1:d0dfbce63a89 252 */
elmot 1:d0dfbce63a89 253
elmot 1:d0dfbce63a89 254 /**
elmot 1:d0dfbce63a89 255 * @}
elmot 1:d0dfbce63a89 256 */
elmot 1:d0dfbce63a89 257
elmot 1:d0dfbce63a89 258 /* Exported functions --------------------------------------------------------*/
elmot 1:d0dfbce63a89 259 /** @defgroup GPIO_LL_Exported_Functions GPIO Exported Functions
elmot 1:d0dfbce63a89 260 * @{
elmot 1:d0dfbce63a89 261 */
elmot 1:d0dfbce63a89 262
elmot 1:d0dfbce63a89 263 /** @defgroup GPIO_LL_EF_Port_Configuration Port Configuration
elmot 1:d0dfbce63a89 264 * @{
elmot 1:d0dfbce63a89 265 */
elmot 1:d0dfbce63a89 266
elmot 1:d0dfbce63a89 267 /**
elmot 1:d0dfbce63a89 268 * @brief Configure gpio mode for a dedicated pin on dedicated port.
elmot 1:d0dfbce63a89 269 * @note I/O mode can be Input mode, General purpose output, Alternate function mode or Analog.
elmot 1:d0dfbce63a89 270 * @note Warning: only one pin can be passed as parameter.
elmot 1:d0dfbce63a89 271 * @rmtoll MODER MODEy LL_GPIO_SetPinMode
elmot 1:d0dfbce63a89 272 * @param GPIOx GPIO Port
elmot 1:d0dfbce63a89 273 * @param Pin This parameter can be one of the following values:
elmot 1:d0dfbce63a89 274 * @arg @ref LL_GPIO_PIN_0
elmot 1:d0dfbce63a89 275 * @arg @ref LL_GPIO_PIN_1
elmot 1:d0dfbce63a89 276 * @arg @ref LL_GPIO_PIN_2
elmot 1:d0dfbce63a89 277 * @arg @ref LL_GPIO_PIN_3
elmot 1:d0dfbce63a89 278 * @arg @ref LL_GPIO_PIN_4
elmot 1:d0dfbce63a89 279 * @arg @ref LL_GPIO_PIN_5
elmot 1:d0dfbce63a89 280 * @arg @ref LL_GPIO_PIN_6
elmot 1:d0dfbce63a89 281 * @arg @ref LL_GPIO_PIN_7
elmot 1:d0dfbce63a89 282 * @arg @ref LL_GPIO_PIN_8
elmot 1:d0dfbce63a89 283 * @arg @ref LL_GPIO_PIN_9
elmot 1:d0dfbce63a89 284 * @arg @ref LL_GPIO_PIN_10
elmot 1:d0dfbce63a89 285 * @arg @ref LL_GPIO_PIN_11
elmot 1:d0dfbce63a89 286 * @arg @ref LL_GPIO_PIN_12
elmot 1:d0dfbce63a89 287 * @arg @ref LL_GPIO_PIN_13
elmot 1:d0dfbce63a89 288 * @arg @ref LL_GPIO_PIN_14
elmot 1:d0dfbce63a89 289 * @arg @ref LL_GPIO_PIN_15
elmot 1:d0dfbce63a89 290 * @param Mode This parameter can be one of the following values:
elmot 1:d0dfbce63a89 291 * @arg @ref LL_GPIO_MODE_INPUT
elmot 1:d0dfbce63a89 292 * @arg @ref LL_GPIO_MODE_OUTPUT
elmot 1:d0dfbce63a89 293 * @arg @ref LL_GPIO_MODE_ALTERNATE
elmot 1:d0dfbce63a89 294 * @arg @ref LL_GPIO_MODE_ANALOG
elmot 1:d0dfbce63a89 295 * @retval None
elmot 1:d0dfbce63a89 296 */
elmot 1:d0dfbce63a89 297 __STATIC_INLINE void LL_GPIO_SetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Mode)
elmot 1:d0dfbce63a89 298 {
elmot 1:d0dfbce63a89 299 MODIFY_REG(GPIOx->MODER, (GPIO_MODER_MODE0 << (POSITION_VAL(Pin) * 2U)), (Mode << (POSITION_VAL(Pin) * 2U)));
elmot 1:d0dfbce63a89 300 }
elmot 1:d0dfbce63a89 301
elmot 1:d0dfbce63a89 302 /**
elmot 1:d0dfbce63a89 303 * @brief Return gpio mode for a dedicated pin on dedicated port.
elmot 1:d0dfbce63a89 304 * @note I/O mode can be Input mode, General purpose output, Alternate function mode or Analog.
elmot 1:d0dfbce63a89 305 * @note Warning: only one pin can be passed as parameter.
elmot 1:d0dfbce63a89 306 * @rmtoll MODER MODEy LL_GPIO_GetPinMode
elmot 1:d0dfbce63a89 307 * @param GPIOx GPIO Port
elmot 1:d0dfbce63a89 308 * @param Pin This parameter can be one of the following values:
elmot 1:d0dfbce63a89 309 * @arg @ref LL_GPIO_PIN_0
elmot 1:d0dfbce63a89 310 * @arg @ref LL_GPIO_PIN_1
elmot 1:d0dfbce63a89 311 * @arg @ref LL_GPIO_PIN_2
elmot 1:d0dfbce63a89 312 * @arg @ref LL_GPIO_PIN_3
elmot 1:d0dfbce63a89 313 * @arg @ref LL_GPIO_PIN_4
elmot 1:d0dfbce63a89 314 * @arg @ref LL_GPIO_PIN_5
elmot 1:d0dfbce63a89 315 * @arg @ref LL_GPIO_PIN_6
elmot 1:d0dfbce63a89 316 * @arg @ref LL_GPIO_PIN_7
elmot 1:d0dfbce63a89 317 * @arg @ref LL_GPIO_PIN_8
elmot 1:d0dfbce63a89 318 * @arg @ref LL_GPIO_PIN_9
elmot 1:d0dfbce63a89 319 * @arg @ref LL_GPIO_PIN_10
elmot 1:d0dfbce63a89 320 * @arg @ref LL_GPIO_PIN_11
elmot 1:d0dfbce63a89 321 * @arg @ref LL_GPIO_PIN_12
elmot 1:d0dfbce63a89 322 * @arg @ref LL_GPIO_PIN_13
elmot 1:d0dfbce63a89 323 * @arg @ref LL_GPIO_PIN_14
elmot 1:d0dfbce63a89 324 * @arg @ref LL_GPIO_PIN_15
elmot 1:d0dfbce63a89 325 * @retval Returned value can be one of the following values:
elmot 1:d0dfbce63a89 326 * @arg @ref LL_GPIO_MODE_INPUT
elmot 1:d0dfbce63a89 327 * @arg @ref LL_GPIO_MODE_OUTPUT
elmot 1:d0dfbce63a89 328 * @arg @ref LL_GPIO_MODE_ALTERNATE
elmot 1:d0dfbce63a89 329 * @arg @ref LL_GPIO_MODE_ANALOG
elmot 1:d0dfbce63a89 330 */
elmot 1:d0dfbce63a89 331 __STATIC_INLINE uint32_t LL_GPIO_GetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin)
elmot 1:d0dfbce63a89 332 {
elmot 1:d0dfbce63a89 333 return (uint32_t)(READ_BIT(GPIOx->MODER,
elmot 1:d0dfbce63a89 334 (GPIO_MODER_MODE0 << (POSITION_VAL(Pin) * 2U))) >> (POSITION_VAL(Pin) * 2U));
elmot 1:d0dfbce63a89 335 }
elmot 1:d0dfbce63a89 336
elmot 1:d0dfbce63a89 337 /**
elmot 1:d0dfbce63a89 338 * @brief Configure gpio output type for several pins on dedicated port.
elmot 1:d0dfbce63a89 339 * @note Output type as to be set when gpio pin is in output or
elmot 1:d0dfbce63a89 340 * alternate modes. Possible type are Push-pull or Open-drain.
elmot 1:d0dfbce63a89 341 * @rmtoll OTYPER OTy LL_GPIO_SetPinOutputType
elmot 1:d0dfbce63a89 342 * @param GPIOx GPIO Port
elmot 1:d0dfbce63a89 343 * @param PinMask This parameter can be a combination of the following values:
elmot 1:d0dfbce63a89 344 * @arg @ref LL_GPIO_PIN_0
elmot 1:d0dfbce63a89 345 * @arg @ref LL_GPIO_PIN_1
elmot 1:d0dfbce63a89 346 * @arg @ref LL_GPIO_PIN_2
elmot 1:d0dfbce63a89 347 * @arg @ref LL_GPIO_PIN_3
elmot 1:d0dfbce63a89 348 * @arg @ref LL_GPIO_PIN_4
elmot 1:d0dfbce63a89 349 * @arg @ref LL_GPIO_PIN_5
elmot 1:d0dfbce63a89 350 * @arg @ref LL_GPIO_PIN_6
elmot 1:d0dfbce63a89 351 * @arg @ref LL_GPIO_PIN_7
elmot 1:d0dfbce63a89 352 * @arg @ref LL_GPIO_PIN_8
elmot 1:d0dfbce63a89 353 * @arg @ref LL_GPIO_PIN_9
elmot 1:d0dfbce63a89 354 * @arg @ref LL_GPIO_PIN_10
elmot 1:d0dfbce63a89 355 * @arg @ref LL_GPIO_PIN_11
elmot 1:d0dfbce63a89 356 * @arg @ref LL_GPIO_PIN_12
elmot 1:d0dfbce63a89 357 * @arg @ref LL_GPIO_PIN_13
elmot 1:d0dfbce63a89 358 * @arg @ref LL_GPIO_PIN_14
elmot 1:d0dfbce63a89 359 * @arg @ref LL_GPIO_PIN_15
elmot 1:d0dfbce63a89 360 * @arg @ref LL_GPIO_PIN_ALL
elmot 1:d0dfbce63a89 361 * @param OutputType This parameter can be one of the following values:
elmot 1:d0dfbce63a89 362 * @arg @ref LL_GPIO_OUTPUT_PUSHPULL
elmot 1:d0dfbce63a89 363 * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN
elmot 1:d0dfbce63a89 364 * @retval None
elmot 1:d0dfbce63a89 365 */
elmot 1:d0dfbce63a89 366 __STATIC_INLINE void LL_GPIO_SetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t PinMask, uint32_t OutputType)
elmot 1:d0dfbce63a89 367 {
elmot 1:d0dfbce63a89 368 MODIFY_REG(GPIOx->OTYPER, PinMask, (PinMask * OutputType));
elmot 1:d0dfbce63a89 369 }
elmot 1:d0dfbce63a89 370
elmot 1:d0dfbce63a89 371 /**
elmot 1:d0dfbce63a89 372 * @brief Return gpio output type for several pins on dedicated port.
elmot 1:d0dfbce63a89 373 * @note Output type as to be set when gpio pin is in output or
elmot 1:d0dfbce63a89 374 * alternate modes. Possible type are Push-pull or Open-drain.
elmot 1:d0dfbce63a89 375 * @note Warning: only one pin can be passed as parameter.
elmot 1:d0dfbce63a89 376 * @rmtoll OTYPER OTy LL_GPIO_GetPinOutputType
elmot 1:d0dfbce63a89 377 * @param GPIOx GPIO Port
elmot 1:d0dfbce63a89 378 * @param Pin This parameter can be one of the following values:
elmot 1:d0dfbce63a89 379 * @arg @ref LL_GPIO_PIN_0
elmot 1:d0dfbce63a89 380 * @arg @ref LL_GPIO_PIN_1
elmot 1:d0dfbce63a89 381 * @arg @ref LL_GPIO_PIN_2
elmot 1:d0dfbce63a89 382 * @arg @ref LL_GPIO_PIN_3
elmot 1:d0dfbce63a89 383 * @arg @ref LL_GPIO_PIN_4
elmot 1:d0dfbce63a89 384 * @arg @ref LL_GPIO_PIN_5
elmot 1:d0dfbce63a89 385 * @arg @ref LL_GPIO_PIN_6
elmot 1:d0dfbce63a89 386 * @arg @ref LL_GPIO_PIN_7
elmot 1:d0dfbce63a89 387 * @arg @ref LL_GPIO_PIN_8
elmot 1:d0dfbce63a89 388 * @arg @ref LL_GPIO_PIN_9
elmot 1:d0dfbce63a89 389 * @arg @ref LL_GPIO_PIN_10
elmot 1:d0dfbce63a89 390 * @arg @ref LL_GPIO_PIN_11
elmot 1:d0dfbce63a89 391 * @arg @ref LL_GPIO_PIN_12
elmot 1:d0dfbce63a89 392 * @arg @ref LL_GPIO_PIN_13
elmot 1:d0dfbce63a89 393 * @arg @ref LL_GPIO_PIN_14
elmot 1:d0dfbce63a89 394 * @arg @ref LL_GPIO_PIN_15
elmot 1:d0dfbce63a89 395 * @arg @ref LL_GPIO_PIN_ALL
elmot 1:d0dfbce63a89 396 * @retval Returned value can be one of the following values:
elmot 1:d0dfbce63a89 397 * @arg @ref LL_GPIO_OUTPUT_PUSHPULL
elmot 1:d0dfbce63a89 398 * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN
elmot 1:d0dfbce63a89 399 */
elmot 1:d0dfbce63a89 400 __STATIC_INLINE uint32_t LL_GPIO_GetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t Pin)
elmot 1:d0dfbce63a89 401 {
elmot 1:d0dfbce63a89 402 return (uint32_t)(READ_BIT(GPIOx->OTYPER, Pin) >> POSITION_VAL(Pin));
elmot 1:d0dfbce63a89 403 }
elmot 1:d0dfbce63a89 404
elmot 1:d0dfbce63a89 405 /**
elmot 1:d0dfbce63a89 406 * @brief Configure gpio speed for a dedicated pin on dedicated port.
elmot 1:d0dfbce63a89 407 * @note I/O speed can be Low, Medium, Fast or High speed.
elmot 1:d0dfbce63a89 408 * @note Warning: only one pin can be passed as parameter.
elmot 1:d0dfbce63a89 409 * @note Refer to datasheet for frequency specifications and the power
elmot 1:d0dfbce63a89 410 * supply and load conditions for each speed.
elmot 1:d0dfbce63a89 411 * @rmtoll OSPEEDR OSPEEDy LL_GPIO_SetPinSpeed
elmot 1:d0dfbce63a89 412 * @param GPIOx GPIO Port
elmot 1:d0dfbce63a89 413 * @param Pin This parameter can be one of the following values:
elmot 1:d0dfbce63a89 414 * @arg @ref LL_GPIO_PIN_0
elmot 1:d0dfbce63a89 415 * @arg @ref LL_GPIO_PIN_1
elmot 1:d0dfbce63a89 416 * @arg @ref LL_GPIO_PIN_2
elmot 1:d0dfbce63a89 417 * @arg @ref LL_GPIO_PIN_3
elmot 1:d0dfbce63a89 418 * @arg @ref LL_GPIO_PIN_4
elmot 1:d0dfbce63a89 419 * @arg @ref LL_GPIO_PIN_5
elmot 1:d0dfbce63a89 420 * @arg @ref LL_GPIO_PIN_6
elmot 1:d0dfbce63a89 421 * @arg @ref LL_GPIO_PIN_7
elmot 1:d0dfbce63a89 422 * @arg @ref LL_GPIO_PIN_8
elmot 1:d0dfbce63a89 423 * @arg @ref LL_GPIO_PIN_9
elmot 1:d0dfbce63a89 424 * @arg @ref LL_GPIO_PIN_10
elmot 1:d0dfbce63a89 425 * @arg @ref LL_GPIO_PIN_11
elmot 1:d0dfbce63a89 426 * @arg @ref LL_GPIO_PIN_12
elmot 1:d0dfbce63a89 427 * @arg @ref LL_GPIO_PIN_13
elmot 1:d0dfbce63a89 428 * @arg @ref LL_GPIO_PIN_14
elmot 1:d0dfbce63a89 429 * @arg @ref LL_GPIO_PIN_15
elmot 1:d0dfbce63a89 430 * @param Speed This parameter can be one of the following values:
elmot 1:d0dfbce63a89 431 * @arg @ref LL_GPIO_SPEED_FREQ_LOW
elmot 1:d0dfbce63a89 432 * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM
elmot 1:d0dfbce63a89 433 * @arg @ref LL_GPIO_SPEED_FREQ_HIGH
elmot 1:d0dfbce63a89 434 * @arg @ref LL_GPIO_SPEED_FREQ_VERY_HIGH
elmot 1:d0dfbce63a89 435 * @retval None
elmot 1:d0dfbce63a89 436 */
elmot 1:d0dfbce63a89 437 __STATIC_INLINE void LL_GPIO_SetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Speed)
elmot 1:d0dfbce63a89 438 {
elmot 1:d0dfbce63a89 439 MODIFY_REG(GPIOx->OSPEEDR, (GPIO_OSPEEDR_OSPEED0 << (POSITION_VAL(Pin) * 2U)),
elmot 1:d0dfbce63a89 440 (Speed << (POSITION_VAL(Pin) * 2U)));
elmot 1:d0dfbce63a89 441 }
elmot 1:d0dfbce63a89 442
elmot 1:d0dfbce63a89 443 /**
elmot 1:d0dfbce63a89 444 * @brief Return gpio speed for a dedicated pin on dedicated port.
elmot 1:d0dfbce63a89 445 * @note I/O speed can be Low, Medium, Fast or High speed.
elmot 1:d0dfbce63a89 446 * @note Warning: only one pin can be passed as parameter.
elmot 1:d0dfbce63a89 447 * @note Refer to datasheet for frequency specifications and the power
elmot 1:d0dfbce63a89 448 * supply and load conditions for each speed.
elmot 1:d0dfbce63a89 449 * @rmtoll OSPEEDR OSPEEDy LL_GPIO_GetPinSpeed
elmot 1:d0dfbce63a89 450 * @param GPIOx GPIO Port
elmot 1:d0dfbce63a89 451 * @param Pin This parameter can be one of the following values:
elmot 1:d0dfbce63a89 452 * @arg @ref LL_GPIO_PIN_0
elmot 1:d0dfbce63a89 453 * @arg @ref LL_GPIO_PIN_1
elmot 1:d0dfbce63a89 454 * @arg @ref LL_GPIO_PIN_2
elmot 1:d0dfbce63a89 455 * @arg @ref LL_GPIO_PIN_3
elmot 1:d0dfbce63a89 456 * @arg @ref LL_GPIO_PIN_4
elmot 1:d0dfbce63a89 457 * @arg @ref LL_GPIO_PIN_5
elmot 1:d0dfbce63a89 458 * @arg @ref LL_GPIO_PIN_6
elmot 1:d0dfbce63a89 459 * @arg @ref LL_GPIO_PIN_7
elmot 1:d0dfbce63a89 460 * @arg @ref LL_GPIO_PIN_8
elmot 1:d0dfbce63a89 461 * @arg @ref LL_GPIO_PIN_9
elmot 1:d0dfbce63a89 462 * @arg @ref LL_GPIO_PIN_10
elmot 1:d0dfbce63a89 463 * @arg @ref LL_GPIO_PIN_11
elmot 1:d0dfbce63a89 464 * @arg @ref LL_GPIO_PIN_12
elmot 1:d0dfbce63a89 465 * @arg @ref LL_GPIO_PIN_13
elmot 1:d0dfbce63a89 466 * @arg @ref LL_GPIO_PIN_14
elmot 1:d0dfbce63a89 467 * @arg @ref LL_GPIO_PIN_15
elmot 1:d0dfbce63a89 468 * @retval Returned value can be one of the following values:
elmot 1:d0dfbce63a89 469 * @arg @ref LL_GPIO_SPEED_FREQ_LOW
elmot 1:d0dfbce63a89 470 * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM
elmot 1:d0dfbce63a89 471 * @arg @ref LL_GPIO_SPEED_FREQ_HIGH
elmot 1:d0dfbce63a89 472 * @arg @ref LL_GPIO_SPEED_FREQ_VERY_HIGH
elmot 1:d0dfbce63a89 473 */
elmot 1:d0dfbce63a89 474 __STATIC_INLINE uint32_t LL_GPIO_GetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin)
elmot 1:d0dfbce63a89 475 {
elmot 1:d0dfbce63a89 476 return (uint32_t)(READ_BIT(GPIOx->OSPEEDR,
elmot 1:d0dfbce63a89 477 (GPIO_OSPEEDR_OSPEED0 << (POSITION_VAL(Pin) * 2U))) >> (POSITION_VAL(Pin) * 2U));
elmot 1:d0dfbce63a89 478 }
elmot 1:d0dfbce63a89 479
elmot 1:d0dfbce63a89 480 /**
elmot 1:d0dfbce63a89 481 * @brief Configure gpio pull-up or pull-down for a dedicated pin on a dedicated port.
elmot 1:d0dfbce63a89 482 * @note Warning: only one pin can be passed as parameter.
elmot 1:d0dfbce63a89 483 * @rmtoll PUPDR PUPDy LL_GPIO_SetPinPull
elmot 1:d0dfbce63a89 484 * @param GPIOx GPIO Port
elmot 1:d0dfbce63a89 485 * @param Pin This parameter can be one of the following values:
elmot 1:d0dfbce63a89 486 * @arg @ref LL_GPIO_PIN_0
elmot 1:d0dfbce63a89 487 * @arg @ref LL_GPIO_PIN_1
elmot 1:d0dfbce63a89 488 * @arg @ref LL_GPIO_PIN_2
elmot 1:d0dfbce63a89 489 * @arg @ref LL_GPIO_PIN_3
elmot 1:d0dfbce63a89 490 * @arg @ref LL_GPIO_PIN_4
elmot 1:d0dfbce63a89 491 * @arg @ref LL_GPIO_PIN_5
elmot 1:d0dfbce63a89 492 * @arg @ref LL_GPIO_PIN_6
elmot 1:d0dfbce63a89 493 * @arg @ref LL_GPIO_PIN_7
elmot 1:d0dfbce63a89 494 * @arg @ref LL_GPIO_PIN_8
elmot 1:d0dfbce63a89 495 * @arg @ref LL_GPIO_PIN_9
elmot 1:d0dfbce63a89 496 * @arg @ref LL_GPIO_PIN_10
elmot 1:d0dfbce63a89 497 * @arg @ref LL_GPIO_PIN_11
elmot 1:d0dfbce63a89 498 * @arg @ref LL_GPIO_PIN_12
elmot 1:d0dfbce63a89 499 * @arg @ref LL_GPIO_PIN_13
elmot 1:d0dfbce63a89 500 * @arg @ref LL_GPIO_PIN_14
elmot 1:d0dfbce63a89 501 * @arg @ref LL_GPIO_PIN_15
elmot 1:d0dfbce63a89 502 * @param Pull This parameter can be one of the following values:
elmot 1:d0dfbce63a89 503 * @arg @ref LL_GPIO_PULL_NO
elmot 1:d0dfbce63a89 504 * @arg @ref LL_GPIO_PULL_UP
elmot 1:d0dfbce63a89 505 * @arg @ref LL_GPIO_PULL_DOWN
elmot 1:d0dfbce63a89 506 * @retval None
elmot 1:d0dfbce63a89 507 */
elmot 1:d0dfbce63a89 508 __STATIC_INLINE void LL_GPIO_SetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Pull)
elmot 1:d0dfbce63a89 509 {
elmot 1:d0dfbce63a89 510 MODIFY_REG(GPIOx->PUPDR, (GPIO_PUPDR_PUPD0 << (POSITION_VAL(Pin) * 2U)), (Pull << (POSITION_VAL(Pin) * 2U)));
elmot 1:d0dfbce63a89 511 }
elmot 1:d0dfbce63a89 512
elmot 1:d0dfbce63a89 513 /**
elmot 1:d0dfbce63a89 514 * @brief Return gpio pull-up or pull-down for a dedicated pin on a dedicated port
elmot 1:d0dfbce63a89 515 * @note Warning: only one pin can be passed as parameter.
elmot 1:d0dfbce63a89 516 * @rmtoll PUPDR PUPDy LL_GPIO_GetPinPull
elmot 1:d0dfbce63a89 517 * @param GPIOx GPIO Port
elmot 1:d0dfbce63a89 518 * @param Pin This parameter can be one of the following values:
elmot 1:d0dfbce63a89 519 * @arg @ref LL_GPIO_PIN_0
elmot 1:d0dfbce63a89 520 * @arg @ref LL_GPIO_PIN_1
elmot 1:d0dfbce63a89 521 * @arg @ref LL_GPIO_PIN_2
elmot 1:d0dfbce63a89 522 * @arg @ref LL_GPIO_PIN_3
elmot 1:d0dfbce63a89 523 * @arg @ref LL_GPIO_PIN_4
elmot 1:d0dfbce63a89 524 * @arg @ref LL_GPIO_PIN_5
elmot 1:d0dfbce63a89 525 * @arg @ref LL_GPIO_PIN_6
elmot 1:d0dfbce63a89 526 * @arg @ref LL_GPIO_PIN_7
elmot 1:d0dfbce63a89 527 * @arg @ref LL_GPIO_PIN_8
elmot 1:d0dfbce63a89 528 * @arg @ref LL_GPIO_PIN_9
elmot 1:d0dfbce63a89 529 * @arg @ref LL_GPIO_PIN_10
elmot 1:d0dfbce63a89 530 * @arg @ref LL_GPIO_PIN_11
elmot 1:d0dfbce63a89 531 * @arg @ref LL_GPIO_PIN_12
elmot 1:d0dfbce63a89 532 * @arg @ref LL_GPIO_PIN_13
elmot 1:d0dfbce63a89 533 * @arg @ref LL_GPIO_PIN_14
elmot 1:d0dfbce63a89 534 * @arg @ref LL_GPIO_PIN_15
elmot 1:d0dfbce63a89 535 * @retval Returned value can be one of the following values:
elmot 1:d0dfbce63a89 536 * @arg @ref LL_GPIO_PULL_NO
elmot 1:d0dfbce63a89 537 * @arg @ref LL_GPIO_PULL_UP
elmot 1:d0dfbce63a89 538 * @arg @ref LL_GPIO_PULL_DOWN
elmot 1:d0dfbce63a89 539 */
elmot 1:d0dfbce63a89 540 __STATIC_INLINE uint32_t LL_GPIO_GetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin)
elmot 1:d0dfbce63a89 541 {
elmot 1:d0dfbce63a89 542 return (uint32_t)(READ_BIT(GPIOx->PUPDR,
elmot 1:d0dfbce63a89 543 (GPIO_PUPDR_PUPD0 << (POSITION_VAL(Pin) * 2U))) >> (POSITION_VAL(Pin) * 2U));
elmot 1:d0dfbce63a89 544 }
elmot 1:d0dfbce63a89 545
elmot 1:d0dfbce63a89 546 /**
elmot 1:d0dfbce63a89 547 * @brief Configure gpio alternate function of a dedicated pin from 0 to 7 for a dedicated port.
elmot 1:d0dfbce63a89 548 * @note Possible values are from AF0 to AF15 depending on target.
elmot 1:d0dfbce63a89 549 * @note Warning: only one pin can be passed as parameter.
elmot 1:d0dfbce63a89 550 * @rmtoll AFRL AFSELy LL_GPIO_SetAFPin_0_7
elmot 1:d0dfbce63a89 551 * @param GPIOx GPIO Port
elmot 1:d0dfbce63a89 552 * @param Pin This parameter can be one of the following values:
elmot 1:d0dfbce63a89 553 * @arg @ref LL_GPIO_PIN_0
elmot 1:d0dfbce63a89 554 * @arg @ref LL_GPIO_PIN_1
elmot 1:d0dfbce63a89 555 * @arg @ref LL_GPIO_PIN_2
elmot 1:d0dfbce63a89 556 * @arg @ref LL_GPIO_PIN_3
elmot 1:d0dfbce63a89 557 * @arg @ref LL_GPIO_PIN_4
elmot 1:d0dfbce63a89 558 * @arg @ref LL_GPIO_PIN_5
elmot 1:d0dfbce63a89 559 * @arg @ref LL_GPIO_PIN_6
elmot 1:d0dfbce63a89 560 * @arg @ref LL_GPIO_PIN_7
elmot 1:d0dfbce63a89 561 * @param Alternate This parameter can be one of the following values:
elmot 1:d0dfbce63a89 562 * @arg @ref LL_GPIO_AF_0
elmot 1:d0dfbce63a89 563 * @arg @ref LL_GPIO_AF_1
elmot 1:d0dfbce63a89 564 * @arg @ref LL_GPIO_AF_2
elmot 1:d0dfbce63a89 565 * @arg @ref LL_GPIO_AF_3
elmot 1:d0dfbce63a89 566 * @arg @ref LL_GPIO_AF_4
elmot 1:d0dfbce63a89 567 * @arg @ref LL_GPIO_AF_5
elmot 1:d0dfbce63a89 568 * @arg @ref LL_GPIO_AF_6
elmot 1:d0dfbce63a89 569 * @arg @ref LL_GPIO_AF_7
elmot 1:d0dfbce63a89 570 * @arg @ref LL_GPIO_AF_8
elmot 1:d0dfbce63a89 571 * @arg @ref LL_GPIO_AF_9
elmot 1:d0dfbce63a89 572 * @arg @ref LL_GPIO_AF_10
elmot 1:d0dfbce63a89 573 * @arg @ref LL_GPIO_AF_11
elmot 1:d0dfbce63a89 574 * @arg @ref LL_GPIO_AF_12
elmot 1:d0dfbce63a89 575 * @arg @ref LL_GPIO_AF_13
elmot 1:d0dfbce63a89 576 * @arg @ref LL_GPIO_AF_14
elmot 1:d0dfbce63a89 577 * @arg @ref LL_GPIO_AF_15
elmot 1:d0dfbce63a89 578 * @retval None
elmot 1:d0dfbce63a89 579 */
elmot 1:d0dfbce63a89 580 __STATIC_INLINE void LL_GPIO_SetAFPin_0_7(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Alternate)
elmot 1:d0dfbce63a89 581 {
elmot 1:d0dfbce63a89 582 MODIFY_REG(GPIOx->AFR[0], (GPIO_AFRL_AFSEL0 << (POSITION_VAL(Pin) * 4U)),
elmot 1:d0dfbce63a89 583 (Alternate << (POSITION_VAL(Pin) * 4U)));
elmot 1:d0dfbce63a89 584 }
elmot 1:d0dfbce63a89 585
elmot 1:d0dfbce63a89 586 /**
elmot 1:d0dfbce63a89 587 * @brief Return gpio alternate function of a dedicated pin from 0 to 7 for a dedicated port.
elmot 1:d0dfbce63a89 588 * @rmtoll AFRL AFSELy LL_GPIO_GetAFPin_0_7
elmot 1:d0dfbce63a89 589 * @param GPIOx GPIO Port
elmot 1:d0dfbce63a89 590 * @param Pin This parameter can be one of the following values:
elmot 1:d0dfbce63a89 591 * @arg @ref LL_GPIO_PIN_0
elmot 1:d0dfbce63a89 592 * @arg @ref LL_GPIO_PIN_1
elmot 1:d0dfbce63a89 593 * @arg @ref LL_GPIO_PIN_2
elmot 1:d0dfbce63a89 594 * @arg @ref LL_GPIO_PIN_3
elmot 1:d0dfbce63a89 595 * @arg @ref LL_GPIO_PIN_4
elmot 1:d0dfbce63a89 596 * @arg @ref LL_GPIO_PIN_5
elmot 1:d0dfbce63a89 597 * @arg @ref LL_GPIO_PIN_6
elmot 1:d0dfbce63a89 598 * @arg @ref LL_GPIO_PIN_7
elmot 1:d0dfbce63a89 599 * @retval Returned value can be one of the following values:
elmot 1:d0dfbce63a89 600 * @arg @ref LL_GPIO_AF_0
elmot 1:d0dfbce63a89 601 * @arg @ref LL_GPIO_AF_1
elmot 1:d0dfbce63a89 602 * @arg @ref LL_GPIO_AF_2
elmot 1:d0dfbce63a89 603 * @arg @ref LL_GPIO_AF_3
elmot 1:d0dfbce63a89 604 * @arg @ref LL_GPIO_AF_4
elmot 1:d0dfbce63a89 605 * @arg @ref LL_GPIO_AF_5
elmot 1:d0dfbce63a89 606 * @arg @ref LL_GPIO_AF_6
elmot 1:d0dfbce63a89 607 * @arg @ref LL_GPIO_AF_7
elmot 1:d0dfbce63a89 608 * @arg @ref LL_GPIO_AF_8
elmot 1:d0dfbce63a89 609 * @arg @ref LL_GPIO_AF_9
elmot 1:d0dfbce63a89 610 * @arg @ref LL_GPIO_AF_10
elmot 1:d0dfbce63a89 611 * @arg @ref LL_GPIO_AF_11
elmot 1:d0dfbce63a89 612 * @arg @ref LL_GPIO_AF_12
elmot 1:d0dfbce63a89 613 * @arg @ref LL_GPIO_AF_13
elmot 1:d0dfbce63a89 614 * @arg @ref LL_GPIO_AF_14
elmot 1:d0dfbce63a89 615 * @arg @ref LL_GPIO_AF_15
elmot 1:d0dfbce63a89 616 */
elmot 1:d0dfbce63a89 617 __STATIC_INLINE uint32_t LL_GPIO_GetAFPin_0_7(GPIO_TypeDef *GPIOx, uint32_t Pin)
elmot 1:d0dfbce63a89 618 {
elmot 1:d0dfbce63a89 619 return (uint32_t)(READ_BIT(GPIOx->AFR[0],
elmot 1:d0dfbce63a89 620 (GPIO_AFRL_AFSEL0 << (POSITION_VAL(Pin) * 4U))) >> (POSITION_VAL(Pin) * 4U));
elmot 1:d0dfbce63a89 621 }
elmot 1:d0dfbce63a89 622
elmot 1:d0dfbce63a89 623 /**
elmot 1:d0dfbce63a89 624 * @brief Configure gpio alternate function of a dedicated pin from 8 to 15 for a dedicated port.
elmot 1:d0dfbce63a89 625 * @note Possible values are from AF0 to AF15 depending on target.
elmot 1:d0dfbce63a89 626 * @note Warning: only one pin can be passed as parameter.
elmot 1:d0dfbce63a89 627 * @rmtoll AFRH AFSELy LL_GPIO_SetAFPin_8_15
elmot 1:d0dfbce63a89 628 * @param GPIOx GPIO Port
elmot 1:d0dfbce63a89 629 * @param Pin This parameter can be one of the following values:
elmot 1:d0dfbce63a89 630 * @arg @ref LL_GPIO_PIN_8
elmot 1:d0dfbce63a89 631 * @arg @ref LL_GPIO_PIN_9
elmot 1:d0dfbce63a89 632 * @arg @ref LL_GPIO_PIN_10
elmot 1:d0dfbce63a89 633 * @arg @ref LL_GPIO_PIN_11
elmot 1:d0dfbce63a89 634 * @arg @ref LL_GPIO_PIN_12
elmot 1:d0dfbce63a89 635 * @arg @ref LL_GPIO_PIN_13
elmot 1:d0dfbce63a89 636 * @arg @ref LL_GPIO_PIN_14
elmot 1:d0dfbce63a89 637 * @arg @ref LL_GPIO_PIN_15
elmot 1:d0dfbce63a89 638 * @param Alternate This parameter can be one of the following values:
elmot 1:d0dfbce63a89 639 * @arg @ref LL_GPIO_AF_0
elmot 1:d0dfbce63a89 640 * @arg @ref LL_GPIO_AF_1
elmot 1:d0dfbce63a89 641 * @arg @ref LL_GPIO_AF_2
elmot 1:d0dfbce63a89 642 * @arg @ref LL_GPIO_AF_3
elmot 1:d0dfbce63a89 643 * @arg @ref LL_GPIO_AF_4
elmot 1:d0dfbce63a89 644 * @arg @ref LL_GPIO_AF_5
elmot 1:d0dfbce63a89 645 * @arg @ref LL_GPIO_AF_6
elmot 1:d0dfbce63a89 646 * @arg @ref LL_GPIO_AF_7
elmot 1:d0dfbce63a89 647 * @arg @ref LL_GPIO_AF_8
elmot 1:d0dfbce63a89 648 * @arg @ref LL_GPIO_AF_9
elmot 1:d0dfbce63a89 649 * @arg @ref LL_GPIO_AF_10
elmot 1:d0dfbce63a89 650 * @arg @ref LL_GPIO_AF_11
elmot 1:d0dfbce63a89 651 * @arg @ref LL_GPIO_AF_12
elmot 1:d0dfbce63a89 652 * @arg @ref LL_GPIO_AF_13
elmot 1:d0dfbce63a89 653 * @arg @ref LL_GPIO_AF_14
elmot 1:d0dfbce63a89 654 * @arg @ref LL_GPIO_AF_15
elmot 1:d0dfbce63a89 655 * @retval None
elmot 1:d0dfbce63a89 656 */
elmot 1:d0dfbce63a89 657 __STATIC_INLINE void LL_GPIO_SetAFPin_8_15(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Alternate)
elmot 1:d0dfbce63a89 658 {
elmot 1:d0dfbce63a89 659 MODIFY_REG(GPIOx->AFR[1], (GPIO_AFRH_AFSEL8 << (POSITION_VAL(Pin >> 8U) * 4U)),
elmot 1:d0dfbce63a89 660 (Alternate << (POSITION_VAL(Pin >> 8U) * 4U)));
elmot 1:d0dfbce63a89 661 }
elmot 1:d0dfbce63a89 662
elmot 1:d0dfbce63a89 663 /**
elmot 1:d0dfbce63a89 664 * @brief Return gpio alternate function of a dedicated pin from 8 to 15 for a dedicated port.
elmot 1:d0dfbce63a89 665 * @note Possible values are from AF0 to AF15 depending on target.
elmot 1:d0dfbce63a89 666 * @rmtoll AFRH AFSELy LL_GPIO_GetAFPin_8_15
elmot 1:d0dfbce63a89 667 * @param GPIOx GPIO Port
elmot 1:d0dfbce63a89 668 * @param Pin This parameter can be one of the following values:
elmot 1:d0dfbce63a89 669 * @arg @ref LL_GPIO_PIN_8
elmot 1:d0dfbce63a89 670 * @arg @ref LL_GPIO_PIN_9
elmot 1:d0dfbce63a89 671 * @arg @ref LL_GPIO_PIN_10
elmot 1:d0dfbce63a89 672 * @arg @ref LL_GPIO_PIN_11
elmot 1:d0dfbce63a89 673 * @arg @ref LL_GPIO_PIN_12
elmot 1:d0dfbce63a89 674 * @arg @ref LL_GPIO_PIN_13
elmot 1:d0dfbce63a89 675 * @arg @ref LL_GPIO_PIN_14
elmot 1:d0dfbce63a89 676 * @arg @ref LL_GPIO_PIN_15
elmot 1:d0dfbce63a89 677 * @retval Returned value can be one of the following values:
elmot 1:d0dfbce63a89 678 * @arg @ref LL_GPIO_AF_0
elmot 1:d0dfbce63a89 679 * @arg @ref LL_GPIO_AF_1
elmot 1:d0dfbce63a89 680 * @arg @ref LL_GPIO_AF_2
elmot 1:d0dfbce63a89 681 * @arg @ref LL_GPIO_AF_3
elmot 1:d0dfbce63a89 682 * @arg @ref LL_GPIO_AF_4
elmot 1:d0dfbce63a89 683 * @arg @ref LL_GPIO_AF_5
elmot 1:d0dfbce63a89 684 * @arg @ref LL_GPIO_AF_6
elmot 1:d0dfbce63a89 685 * @arg @ref LL_GPIO_AF_7
elmot 1:d0dfbce63a89 686 * @arg @ref LL_GPIO_AF_8
elmot 1:d0dfbce63a89 687 * @arg @ref LL_GPIO_AF_9
elmot 1:d0dfbce63a89 688 * @arg @ref LL_GPIO_AF_10
elmot 1:d0dfbce63a89 689 * @arg @ref LL_GPIO_AF_11
elmot 1:d0dfbce63a89 690 * @arg @ref LL_GPIO_AF_12
elmot 1:d0dfbce63a89 691 * @arg @ref LL_GPIO_AF_13
elmot 1:d0dfbce63a89 692 * @arg @ref LL_GPIO_AF_14
elmot 1:d0dfbce63a89 693 * @arg @ref LL_GPIO_AF_15
elmot 1:d0dfbce63a89 694 */
elmot 1:d0dfbce63a89 695 __STATIC_INLINE uint32_t LL_GPIO_GetAFPin_8_15(GPIO_TypeDef *GPIOx, uint32_t Pin)
elmot 1:d0dfbce63a89 696 {
elmot 1:d0dfbce63a89 697 return (uint32_t)(READ_BIT(GPIOx->AFR[1],
elmot 1:d0dfbce63a89 698 (GPIO_AFRH_AFSEL8 << (POSITION_VAL(Pin >> 8U) * 4U))) >> (POSITION_VAL(Pin >> 8U) * 4U));
elmot 1:d0dfbce63a89 699 }
elmot 1:d0dfbce63a89 700
elmot 1:d0dfbce63a89 701 #if defined(GPIO_ASCR_ASC0)
elmot 1:d0dfbce63a89 702 /**
elmot 1:d0dfbce63a89 703 * @brief Connect analog switch to ADC input of several pins for a dedicated port.
elmot 1:d0dfbce63a89 704 * @note This bit must be set prior to the ADC conversion.
elmot 1:d0dfbce63a89 705 * Only the IO which connected to the ADC input are effective.
elmot 1:d0dfbce63a89 706 * Other IO must be kept reset value
elmot 1:d0dfbce63a89 707 * @rmtoll ASCR ASCy LL_GPIO_EnablePinAnalogControl
elmot 1:d0dfbce63a89 708 * @param GPIOx GPIO Port
elmot 1:d0dfbce63a89 709 * @param PinMask This parameter can be a combination of the following values:
elmot 1:d0dfbce63a89 710 * @arg @ref LL_GPIO_PIN_0
elmot 1:d0dfbce63a89 711 * @arg @ref LL_GPIO_PIN_1
elmot 1:d0dfbce63a89 712 * @arg @ref LL_GPIO_PIN_2
elmot 1:d0dfbce63a89 713 * @arg @ref LL_GPIO_PIN_3
elmot 1:d0dfbce63a89 714 * @arg @ref LL_GPIO_PIN_4
elmot 1:d0dfbce63a89 715 * @arg @ref LL_GPIO_PIN_5
elmot 1:d0dfbce63a89 716 * @arg @ref LL_GPIO_PIN_6
elmot 1:d0dfbce63a89 717 * @arg @ref LL_GPIO_PIN_7
elmot 1:d0dfbce63a89 718 * @arg @ref LL_GPIO_PIN_8
elmot 1:d0dfbce63a89 719 * @arg @ref LL_GPIO_PIN_9
elmot 1:d0dfbce63a89 720 * @arg @ref LL_GPIO_PIN_10
elmot 1:d0dfbce63a89 721 * @arg @ref LL_GPIO_PIN_11
elmot 1:d0dfbce63a89 722 * @arg @ref LL_GPIO_PIN_12
elmot 1:d0dfbce63a89 723 * @arg @ref LL_GPIO_PIN_13
elmot 1:d0dfbce63a89 724 * @arg @ref LL_GPIO_PIN_14
elmot 1:d0dfbce63a89 725 * @arg @ref LL_GPIO_PIN_15
elmot 1:d0dfbce63a89 726 * @arg @ref LL_GPIO_PIN_ALL
elmot 1:d0dfbce63a89 727 * @retval None
elmot 1:d0dfbce63a89 728 */
elmot 1:d0dfbce63a89 729 __STATIC_INLINE void LL_GPIO_EnablePinAnalogControl(GPIO_TypeDef *GPIOx, uint32_t PinMask)
elmot 1:d0dfbce63a89 730 {
elmot 1:d0dfbce63a89 731 SET_BIT(GPIOx->ASCR, PinMask);
elmot 1:d0dfbce63a89 732 }
elmot 1:d0dfbce63a89 733
elmot 1:d0dfbce63a89 734 /**
elmot 1:d0dfbce63a89 735 * @brief Disconnect analog switch to ADC input of several pins for a dedicated port.
elmot 1:d0dfbce63a89 736 * @rmtoll ASCR ASCy LL_GPIO_DisablePinAnalogControl
elmot 1:d0dfbce63a89 737 * @param GPIOx GPIO Port
elmot 1:d0dfbce63a89 738 * @param PinMask This parameter can be a combination of the following values:
elmot 1:d0dfbce63a89 739 * @arg @ref LL_GPIO_PIN_0
elmot 1:d0dfbce63a89 740 * @arg @ref LL_GPIO_PIN_1
elmot 1:d0dfbce63a89 741 * @arg @ref LL_GPIO_PIN_2
elmot 1:d0dfbce63a89 742 * @arg @ref LL_GPIO_PIN_3
elmot 1:d0dfbce63a89 743 * @arg @ref LL_GPIO_PIN_4
elmot 1:d0dfbce63a89 744 * @arg @ref LL_GPIO_PIN_5
elmot 1:d0dfbce63a89 745 * @arg @ref LL_GPIO_PIN_6
elmot 1:d0dfbce63a89 746 * @arg @ref LL_GPIO_PIN_7
elmot 1:d0dfbce63a89 747 * @arg @ref LL_GPIO_PIN_8
elmot 1:d0dfbce63a89 748 * @arg @ref LL_GPIO_PIN_9
elmot 1:d0dfbce63a89 749 * @arg @ref LL_GPIO_PIN_10
elmot 1:d0dfbce63a89 750 * @arg @ref LL_GPIO_PIN_11
elmot 1:d0dfbce63a89 751 * @arg @ref LL_GPIO_PIN_12
elmot 1:d0dfbce63a89 752 * @arg @ref LL_GPIO_PIN_13
elmot 1:d0dfbce63a89 753 * @arg @ref LL_GPIO_PIN_14
elmot 1:d0dfbce63a89 754 * @arg @ref LL_GPIO_PIN_15
elmot 1:d0dfbce63a89 755 * @arg @ref LL_GPIO_PIN_ALL
elmot 1:d0dfbce63a89 756 * @retval None
elmot 1:d0dfbce63a89 757 */
elmot 1:d0dfbce63a89 758 __STATIC_INLINE void LL_GPIO_DisablePinAnalogControl(GPIO_TypeDef *GPIOx, uint32_t PinMask)
elmot 1:d0dfbce63a89 759 {
elmot 1:d0dfbce63a89 760 CLEAR_BIT(GPIOx->ASCR, PinMask);
elmot 1:d0dfbce63a89 761 }
elmot 1:d0dfbce63a89 762 #endif /* GPIO_ASCR_ASC0 */
elmot 1:d0dfbce63a89 763
elmot 1:d0dfbce63a89 764 /**
elmot 1:d0dfbce63a89 765 * @brief Lock configuration of several pins for a dedicated port.
elmot 1:d0dfbce63a89 766 * @note When the lock sequence has been applied on a port bit, the
elmot 1:d0dfbce63a89 767 * value of this port bit can no longer be modified until the
elmot 1:d0dfbce63a89 768 * next reset.
elmot 1:d0dfbce63a89 769 * @note Each lock bit freezes a specific configuration register
elmot 1:d0dfbce63a89 770 * (control and alternate function registers).
elmot 1:d0dfbce63a89 771 * @rmtoll LCKR LCKK LL_GPIO_LockPin
elmot 1:d0dfbce63a89 772 * @param GPIOx GPIO Port
elmot 1:d0dfbce63a89 773 * @param PinMask This parameter can be a combination of the following values:
elmot 1:d0dfbce63a89 774 * @arg @ref LL_GPIO_PIN_0
elmot 1:d0dfbce63a89 775 * @arg @ref LL_GPIO_PIN_1
elmot 1:d0dfbce63a89 776 * @arg @ref LL_GPIO_PIN_2
elmot 1:d0dfbce63a89 777 * @arg @ref LL_GPIO_PIN_3
elmot 1:d0dfbce63a89 778 * @arg @ref LL_GPIO_PIN_4
elmot 1:d0dfbce63a89 779 * @arg @ref LL_GPIO_PIN_5
elmot 1:d0dfbce63a89 780 * @arg @ref LL_GPIO_PIN_6
elmot 1:d0dfbce63a89 781 * @arg @ref LL_GPIO_PIN_7
elmot 1:d0dfbce63a89 782 * @arg @ref LL_GPIO_PIN_8
elmot 1:d0dfbce63a89 783 * @arg @ref LL_GPIO_PIN_9
elmot 1:d0dfbce63a89 784 * @arg @ref LL_GPIO_PIN_10
elmot 1:d0dfbce63a89 785 * @arg @ref LL_GPIO_PIN_11
elmot 1:d0dfbce63a89 786 * @arg @ref LL_GPIO_PIN_12
elmot 1:d0dfbce63a89 787 * @arg @ref LL_GPIO_PIN_13
elmot 1:d0dfbce63a89 788 * @arg @ref LL_GPIO_PIN_14
elmot 1:d0dfbce63a89 789 * @arg @ref LL_GPIO_PIN_15
elmot 1:d0dfbce63a89 790 * @arg @ref LL_GPIO_PIN_ALL
elmot 1:d0dfbce63a89 791 * @retval None
elmot 1:d0dfbce63a89 792 */
elmot 1:d0dfbce63a89 793 __STATIC_INLINE void LL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint32_t PinMask)
elmot 1:d0dfbce63a89 794 {
elmot 1:d0dfbce63a89 795 __IO uint32_t temp;
elmot 1:d0dfbce63a89 796 WRITE_REG(GPIOx->LCKR, GPIO_LCKR_LCKK | PinMask);
elmot 1:d0dfbce63a89 797 WRITE_REG(GPIOx->LCKR, PinMask);
elmot 1:d0dfbce63a89 798 WRITE_REG(GPIOx->LCKR, GPIO_LCKR_LCKK | PinMask);
elmot 1:d0dfbce63a89 799 temp = READ_REG(GPIOx->LCKR);
elmot 1:d0dfbce63a89 800 (void) temp;
elmot 1:d0dfbce63a89 801 }
elmot 1:d0dfbce63a89 802
elmot 1:d0dfbce63a89 803 /**
elmot 1:d0dfbce63a89 804 * @brief Return 1 if all pins passed as parameter, of a dedicated port, are locked. else Return 0.
elmot 1:d0dfbce63a89 805 * @rmtoll LCKR LCKy LL_GPIO_IsPinLocked
elmot 1:d0dfbce63a89 806 * @param GPIOx GPIO Port
elmot 1:d0dfbce63a89 807 * @param PinMask This parameter can be a combination of the following values:
elmot 1:d0dfbce63a89 808 * @arg @ref LL_GPIO_PIN_0
elmot 1:d0dfbce63a89 809 * @arg @ref LL_GPIO_PIN_1
elmot 1:d0dfbce63a89 810 * @arg @ref LL_GPIO_PIN_2
elmot 1:d0dfbce63a89 811 * @arg @ref LL_GPIO_PIN_3
elmot 1:d0dfbce63a89 812 * @arg @ref LL_GPIO_PIN_4
elmot 1:d0dfbce63a89 813 * @arg @ref LL_GPIO_PIN_5
elmot 1:d0dfbce63a89 814 * @arg @ref LL_GPIO_PIN_6
elmot 1:d0dfbce63a89 815 * @arg @ref LL_GPIO_PIN_7
elmot 1:d0dfbce63a89 816 * @arg @ref LL_GPIO_PIN_8
elmot 1:d0dfbce63a89 817 * @arg @ref LL_GPIO_PIN_9
elmot 1:d0dfbce63a89 818 * @arg @ref LL_GPIO_PIN_10
elmot 1:d0dfbce63a89 819 * @arg @ref LL_GPIO_PIN_11
elmot 1:d0dfbce63a89 820 * @arg @ref LL_GPIO_PIN_12
elmot 1:d0dfbce63a89 821 * @arg @ref LL_GPIO_PIN_13
elmot 1:d0dfbce63a89 822 * @arg @ref LL_GPIO_PIN_14
elmot 1:d0dfbce63a89 823 * @arg @ref LL_GPIO_PIN_15
elmot 1:d0dfbce63a89 824 * @arg @ref LL_GPIO_PIN_ALL
elmot 1:d0dfbce63a89 825 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 826 */
elmot 1:d0dfbce63a89 827 __STATIC_INLINE uint32_t LL_GPIO_IsPinLocked(GPIO_TypeDef *GPIOx, uint32_t PinMask)
elmot 1:d0dfbce63a89 828 {
elmot 1:d0dfbce63a89 829 return (READ_BIT(GPIOx->LCKR, PinMask) == (PinMask));
elmot 1:d0dfbce63a89 830 }
elmot 1:d0dfbce63a89 831
elmot 1:d0dfbce63a89 832 /**
elmot 1:d0dfbce63a89 833 * @brief Return 1 if one of the pin of a dedicated port is locked. else return 0.
elmot 1:d0dfbce63a89 834 * @rmtoll LCKR LCKK LL_GPIO_IsAnyPinLocked
elmot 1:d0dfbce63a89 835 * @param GPIOx GPIO Port
elmot 1:d0dfbce63a89 836 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 837 */
elmot 1:d0dfbce63a89 838 __STATIC_INLINE uint32_t LL_GPIO_IsAnyPinLocked(GPIO_TypeDef *GPIOx)
elmot 1:d0dfbce63a89 839 {
elmot 1:d0dfbce63a89 840 return (READ_BIT(GPIOx->LCKR, GPIO_LCKR_LCKK) == (GPIO_LCKR_LCKK));
elmot 1:d0dfbce63a89 841 }
elmot 1:d0dfbce63a89 842
elmot 1:d0dfbce63a89 843 /**
elmot 1:d0dfbce63a89 844 * @}
elmot 1:d0dfbce63a89 845 */
elmot 1:d0dfbce63a89 846
elmot 1:d0dfbce63a89 847 /** @defgroup GPIO_LL_EF_Data_Access Data Access
elmot 1:d0dfbce63a89 848 * @{
elmot 1:d0dfbce63a89 849 */
elmot 1:d0dfbce63a89 850
elmot 1:d0dfbce63a89 851 /**
elmot 1:d0dfbce63a89 852 * @brief Return full input data register value for a dedicated port.
elmot 1:d0dfbce63a89 853 * @rmtoll IDR IDy LL_GPIO_ReadInputPort
elmot 1:d0dfbce63a89 854 * @param GPIOx GPIO Port
elmot 1:d0dfbce63a89 855 * @retval Input data register value of port
elmot 1:d0dfbce63a89 856 */
elmot 1:d0dfbce63a89 857 __STATIC_INLINE uint32_t LL_GPIO_ReadInputPort(GPIO_TypeDef *GPIOx)
elmot 1:d0dfbce63a89 858 {
elmot 1:d0dfbce63a89 859 return (uint32_t)(READ_REG(GPIOx->IDR));
elmot 1:d0dfbce63a89 860 }
elmot 1:d0dfbce63a89 861
elmot 1:d0dfbce63a89 862 /**
elmot 1:d0dfbce63a89 863 * @brief Return if input data level for several pins of dedicated port is high or low.
elmot 1:d0dfbce63a89 864 * @rmtoll IDR IDy LL_GPIO_IsInputPinSet
elmot 1:d0dfbce63a89 865 * @param GPIOx GPIO Port
elmot 1:d0dfbce63a89 866 * @param PinMask This parameter can be a combination of the following values:
elmot 1:d0dfbce63a89 867 * @arg @ref LL_GPIO_PIN_0
elmot 1:d0dfbce63a89 868 * @arg @ref LL_GPIO_PIN_1
elmot 1:d0dfbce63a89 869 * @arg @ref LL_GPIO_PIN_2
elmot 1:d0dfbce63a89 870 * @arg @ref LL_GPIO_PIN_3
elmot 1:d0dfbce63a89 871 * @arg @ref LL_GPIO_PIN_4
elmot 1:d0dfbce63a89 872 * @arg @ref LL_GPIO_PIN_5
elmot 1:d0dfbce63a89 873 * @arg @ref LL_GPIO_PIN_6
elmot 1:d0dfbce63a89 874 * @arg @ref LL_GPIO_PIN_7
elmot 1:d0dfbce63a89 875 * @arg @ref LL_GPIO_PIN_8
elmot 1:d0dfbce63a89 876 * @arg @ref LL_GPIO_PIN_9
elmot 1:d0dfbce63a89 877 * @arg @ref LL_GPIO_PIN_10
elmot 1:d0dfbce63a89 878 * @arg @ref LL_GPIO_PIN_11
elmot 1:d0dfbce63a89 879 * @arg @ref LL_GPIO_PIN_12
elmot 1:d0dfbce63a89 880 * @arg @ref LL_GPIO_PIN_13
elmot 1:d0dfbce63a89 881 * @arg @ref LL_GPIO_PIN_14
elmot 1:d0dfbce63a89 882 * @arg @ref LL_GPIO_PIN_15
elmot 1:d0dfbce63a89 883 * @arg @ref LL_GPIO_PIN_ALL
elmot 1:d0dfbce63a89 884 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 885 */
elmot 1:d0dfbce63a89 886 __STATIC_INLINE uint32_t LL_GPIO_IsInputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask)
elmot 1:d0dfbce63a89 887 {
elmot 1:d0dfbce63a89 888 return (READ_BIT(GPIOx->IDR, PinMask) == (PinMask));
elmot 1:d0dfbce63a89 889 }
elmot 1:d0dfbce63a89 890
elmot 1:d0dfbce63a89 891 /**
elmot 1:d0dfbce63a89 892 * @brief Write output data register for the port.
elmot 1:d0dfbce63a89 893 * @rmtoll ODR ODy LL_GPIO_WriteOutputPort
elmot 1:d0dfbce63a89 894 * @param GPIOx GPIO Port
elmot 1:d0dfbce63a89 895 * @param PortValue Level value for each pin of the port
elmot 1:d0dfbce63a89 896 * @retval None
elmot 1:d0dfbce63a89 897 */
elmot 1:d0dfbce63a89 898 __STATIC_INLINE void LL_GPIO_WriteOutputPort(GPIO_TypeDef *GPIOx, uint32_t PortValue)
elmot 1:d0dfbce63a89 899 {
elmot 1:d0dfbce63a89 900 WRITE_REG(GPIOx->ODR, PortValue);
elmot 1:d0dfbce63a89 901 }
elmot 1:d0dfbce63a89 902
elmot 1:d0dfbce63a89 903 /**
elmot 1:d0dfbce63a89 904 * @brief Return full output data register value for a dedicated port.
elmot 1:d0dfbce63a89 905 * @rmtoll ODR ODy LL_GPIO_ReadOutputPort
elmot 1:d0dfbce63a89 906 * @param GPIOx GPIO Port
elmot 1:d0dfbce63a89 907 * @retval Output data register value of port
elmot 1:d0dfbce63a89 908 */
elmot 1:d0dfbce63a89 909 __STATIC_INLINE uint32_t LL_GPIO_ReadOutputPort(GPIO_TypeDef *GPIOx)
elmot 1:d0dfbce63a89 910 {
elmot 1:d0dfbce63a89 911 return (uint32_t)(READ_REG(GPIOx->ODR));
elmot 1:d0dfbce63a89 912 }
elmot 1:d0dfbce63a89 913
elmot 1:d0dfbce63a89 914 /**
elmot 1:d0dfbce63a89 915 * @brief Return if input data level for several pins of dedicated port is high or low.
elmot 1:d0dfbce63a89 916 * @rmtoll ODR ODy LL_GPIO_IsOutputPinSet
elmot 1:d0dfbce63a89 917 * @param GPIOx GPIO Port
elmot 1:d0dfbce63a89 918 * @param PinMask This parameter can be a combination of the following values:
elmot 1:d0dfbce63a89 919 * @arg @ref LL_GPIO_PIN_0
elmot 1:d0dfbce63a89 920 * @arg @ref LL_GPIO_PIN_1
elmot 1:d0dfbce63a89 921 * @arg @ref LL_GPIO_PIN_2
elmot 1:d0dfbce63a89 922 * @arg @ref LL_GPIO_PIN_3
elmot 1:d0dfbce63a89 923 * @arg @ref LL_GPIO_PIN_4
elmot 1:d0dfbce63a89 924 * @arg @ref LL_GPIO_PIN_5
elmot 1:d0dfbce63a89 925 * @arg @ref LL_GPIO_PIN_6
elmot 1:d0dfbce63a89 926 * @arg @ref LL_GPIO_PIN_7
elmot 1:d0dfbce63a89 927 * @arg @ref LL_GPIO_PIN_8
elmot 1:d0dfbce63a89 928 * @arg @ref LL_GPIO_PIN_9
elmot 1:d0dfbce63a89 929 * @arg @ref LL_GPIO_PIN_10
elmot 1:d0dfbce63a89 930 * @arg @ref LL_GPIO_PIN_11
elmot 1:d0dfbce63a89 931 * @arg @ref LL_GPIO_PIN_12
elmot 1:d0dfbce63a89 932 * @arg @ref LL_GPIO_PIN_13
elmot 1:d0dfbce63a89 933 * @arg @ref LL_GPIO_PIN_14
elmot 1:d0dfbce63a89 934 * @arg @ref LL_GPIO_PIN_15
elmot 1:d0dfbce63a89 935 * @arg @ref LL_GPIO_PIN_ALL
elmot 1:d0dfbce63a89 936 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 937 */
elmot 1:d0dfbce63a89 938 __STATIC_INLINE uint32_t LL_GPIO_IsOutputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask)
elmot 1:d0dfbce63a89 939 {
elmot 1:d0dfbce63a89 940 return (READ_BIT(GPIOx->ODR, PinMask) == (PinMask));
elmot 1:d0dfbce63a89 941 }
elmot 1:d0dfbce63a89 942
elmot 1:d0dfbce63a89 943 /**
elmot 1:d0dfbce63a89 944 * @brief Set several pins to high level on dedicated gpio port.
elmot 1:d0dfbce63a89 945 * @rmtoll BSRR BSy LL_GPIO_SetOutputPin
elmot 1:d0dfbce63a89 946 * @param GPIOx GPIO Port
elmot 1:d0dfbce63a89 947 * @param PinMask This parameter can be a combination of the following values:
elmot 1:d0dfbce63a89 948 * @arg @ref LL_GPIO_PIN_0
elmot 1:d0dfbce63a89 949 * @arg @ref LL_GPIO_PIN_1
elmot 1:d0dfbce63a89 950 * @arg @ref LL_GPIO_PIN_2
elmot 1:d0dfbce63a89 951 * @arg @ref LL_GPIO_PIN_3
elmot 1:d0dfbce63a89 952 * @arg @ref LL_GPIO_PIN_4
elmot 1:d0dfbce63a89 953 * @arg @ref LL_GPIO_PIN_5
elmot 1:d0dfbce63a89 954 * @arg @ref LL_GPIO_PIN_6
elmot 1:d0dfbce63a89 955 * @arg @ref LL_GPIO_PIN_7
elmot 1:d0dfbce63a89 956 * @arg @ref LL_GPIO_PIN_8
elmot 1:d0dfbce63a89 957 * @arg @ref LL_GPIO_PIN_9
elmot 1:d0dfbce63a89 958 * @arg @ref LL_GPIO_PIN_10
elmot 1:d0dfbce63a89 959 * @arg @ref LL_GPIO_PIN_11
elmot 1:d0dfbce63a89 960 * @arg @ref LL_GPIO_PIN_12
elmot 1:d0dfbce63a89 961 * @arg @ref LL_GPIO_PIN_13
elmot 1:d0dfbce63a89 962 * @arg @ref LL_GPIO_PIN_14
elmot 1:d0dfbce63a89 963 * @arg @ref LL_GPIO_PIN_15
elmot 1:d0dfbce63a89 964 * @arg @ref LL_GPIO_PIN_ALL
elmot 1:d0dfbce63a89 965 * @retval None
elmot 1:d0dfbce63a89 966 */
elmot 1:d0dfbce63a89 967 __STATIC_INLINE void LL_GPIO_SetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask)
elmot 1:d0dfbce63a89 968 {
elmot 1:d0dfbce63a89 969 WRITE_REG(GPIOx->BSRR, PinMask);
elmot 1:d0dfbce63a89 970 }
elmot 1:d0dfbce63a89 971
elmot 1:d0dfbce63a89 972 /**
elmot 1:d0dfbce63a89 973 * @brief Set several pins to low level on dedicated gpio port.
elmot 1:d0dfbce63a89 974 * @rmtoll BRR BRy LL_GPIO_ResetOutputPin
elmot 1:d0dfbce63a89 975 * @param GPIOx GPIO Port
elmot 1:d0dfbce63a89 976 * @param PinMask This parameter can be a combination of the following values:
elmot 1:d0dfbce63a89 977 * @arg @ref LL_GPIO_PIN_0
elmot 1:d0dfbce63a89 978 * @arg @ref LL_GPIO_PIN_1
elmot 1:d0dfbce63a89 979 * @arg @ref LL_GPIO_PIN_2
elmot 1:d0dfbce63a89 980 * @arg @ref LL_GPIO_PIN_3
elmot 1:d0dfbce63a89 981 * @arg @ref LL_GPIO_PIN_4
elmot 1:d0dfbce63a89 982 * @arg @ref LL_GPIO_PIN_5
elmot 1:d0dfbce63a89 983 * @arg @ref LL_GPIO_PIN_6
elmot 1:d0dfbce63a89 984 * @arg @ref LL_GPIO_PIN_7
elmot 1:d0dfbce63a89 985 * @arg @ref LL_GPIO_PIN_8
elmot 1:d0dfbce63a89 986 * @arg @ref LL_GPIO_PIN_9
elmot 1:d0dfbce63a89 987 * @arg @ref LL_GPIO_PIN_10
elmot 1:d0dfbce63a89 988 * @arg @ref LL_GPIO_PIN_11
elmot 1:d0dfbce63a89 989 * @arg @ref LL_GPIO_PIN_12
elmot 1:d0dfbce63a89 990 * @arg @ref LL_GPIO_PIN_13
elmot 1:d0dfbce63a89 991 * @arg @ref LL_GPIO_PIN_14
elmot 1:d0dfbce63a89 992 * @arg @ref LL_GPIO_PIN_15
elmot 1:d0dfbce63a89 993 * @arg @ref LL_GPIO_PIN_ALL
elmot 1:d0dfbce63a89 994 * @retval None
elmot 1:d0dfbce63a89 995 */
elmot 1:d0dfbce63a89 996 __STATIC_INLINE void LL_GPIO_ResetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask)
elmot 1:d0dfbce63a89 997 {
elmot 1:d0dfbce63a89 998 WRITE_REG(GPIOx->BRR, PinMask);
elmot 1:d0dfbce63a89 999 }
elmot 1:d0dfbce63a89 1000
elmot 1:d0dfbce63a89 1001 /**
elmot 1:d0dfbce63a89 1002 * @brief Toggle data value for several pin of dedicated port.
elmot 1:d0dfbce63a89 1003 * @rmtoll ODR ODy LL_GPIO_TogglePin
elmot 1:d0dfbce63a89 1004 * @param GPIOx GPIO Port
elmot 1:d0dfbce63a89 1005 * @param PinMask This parameter can be a combination of the following values:
elmot 1:d0dfbce63a89 1006 * @arg @ref LL_GPIO_PIN_0
elmot 1:d0dfbce63a89 1007 * @arg @ref LL_GPIO_PIN_1
elmot 1:d0dfbce63a89 1008 * @arg @ref LL_GPIO_PIN_2
elmot 1:d0dfbce63a89 1009 * @arg @ref LL_GPIO_PIN_3
elmot 1:d0dfbce63a89 1010 * @arg @ref LL_GPIO_PIN_4
elmot 1:d0dfbce63a89 1011 * @arg @ref LL_GPIO_PIN_5
elmot 1:d0dfbce63a89 1012 * @arg @ref LL_GPIO_PIN_6
elmot 1:d0dfbce63a89 1013 * @arg @ref LL_GPIO_PIN_7
elmot 1:d0dfbce63a89 1014 * @arg @ref LL_GPIO_PIN_8
elmot 1:d0dfbce63a89 1015 * @arg @ref LL_GPIO_PIN_9
elmot 1:d0dfbce63a89 1016 * @arg @ref LL_GPIO_PIN_10
elmot 1:d0dfbce63a89 1017 * @arg @ref LL_GPIO_PIN_11
elmot 1:d0dfbce63a89 1018 * @arg @ref LL_GPIO_PIN_12
elmot 1:d0dfbce63a89 1019 * @arg @ref LL_GPIO_PIN_13
elmot 1:d0dfbce63a89 1020 * @arg @ref LL_GPIO_PIN_14
elmot 1:d0dfbce63a89 1021 * @arg @ref LL_GPIO_PIN_15
elmot 1:d0dfbce63a89 1022 * @arg @ref LL_GPIO_PIN_ALL
elmot 1:d0dfbce63a89 1023 * @retval None
elmot 1:d0dfbce63a89 1024 */
elmot 1:d0dfbce63a89 1025 __STATIC_INLINE void LL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint32_t PinMask)
elmot 1:d0dfbce63a89 1026 {
elmot 1:d0dfbce63a89 1027 WRITE_REG(GPIOx->ODR, READ_REG(GPIOx->ODR) ^ PinMask);
elmot 1:d0dfbce63a89 1028 }
elmot 1:d0dfbce63a89 1029
elmot 1:d0dfbce63a89 1030 /**
elmot 1:d0dfbce63a89 1031 * @}
elmot 1:d0dfbce63a89 1032 */
elmot 1:d0dfbce63a89 1033
elmot 1:d0dfbce63a89 1034 #if defined(USE_FULL_LL_DRIVER)
elmot 1:d0dfbce63a89 1035 /** @defgroup GPIO_LL_EF_Init Initialization and de-initialization functions
elmot 1:d0dfbce63a89 1036 * @{
elmot 1:d0dfbce63a89 1037 */
elmot 1:d0dfbce63a89 1038
elmot 1:d0dfbce63a89 1039 ErrorStatus LL_GPIO_DeInit(GPIO_TypeDef *GPIOx);
elmot 1:d0dfbce63a89 1040 ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStruct);
elmot 1:d0dfbce63a89 1041 void LL_GPIO_StructInit(LL_GPIO_InitTypeDef *GPIO_InitStruct);
elmot 1:d0dfbce63a89 1042
elmot 1:d0dfbce63a89 1043 /**
elmot 1:d0dfbce63a89 1044 * @}
elmot 1:d0dfbce63a89 1045 */
elmot 1:d0dfbce63a89 1046 #endif /* USE_FULL_LL_DRIVER */
elmot 1:d0dfbce63a89 1047
elmot 1:d0dfbce63a89 1048 /**
elmot 1:d0dfbce63a89 1049 * @}
elmot 1:d0dfbce63a89 1050 */
elmot 1:d0dfbce63a89 1051
elmot 1:d0dfbce63a89 1052 /**
elmot 1:d0dfbce63a89 1053 * @}
elmot 1:d0dfbce63a89 1054 */
elmot 1:d0dfbce63a89 1055
elmot 1:d0dfbce63a89 1056 #endif /* defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) || defined (GPIOH) || defined (GPIOI) */
elmot 1:d0dfbce63a89 1057 /**
elmot 1:d0dfbce63a89 1058 * @}
elmot 1:d0dfbce63a89 1059 */
elmot 1:d0dfbce63a89 1060
elmot 1:d0dfbce63a89 1061 #ifdef __cplusplus
elmot 1:d0dfbce63a89 1062 }
elmot 1:d0dfbce63a89 1063 #endif
elmot 1:d0dfbce63a89 1064
elmot 1:d0dfbce63a89 1065 #endif /* __STM32L4xx_LL_GPIO_H */
elmot 1:d0dfbce63a89 1066
elmot 1:d0dfbce63a89 1067 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/