The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Thu Nov 08 11:45:42 2018 +0000
Revision:
171:3a7713b1edbc
Parent:
TARGET_DISCO_F303VC/TARGET_STM/TARGET_STM32F3/device/stm32f3xx_ll_gpio.h@168:b9e159c1930a
mbed library. Release version 164

Who changed what in which revision?

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