Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_gpio.h (90429B)
1 /** 2 ****************************************************************************** 3 * @file stm32f1xx_ll_gpio.h 4 * @author MCD Application Team 5 * @brief Header file of GPIO LL module. 6 ****************************************************************************** 7 * @attention 8 * 9 * Copyright (c) 2016 STMicroelectronics. 10 * All rights reserved. 11 * 12 * This software is licensed under terms that can be found in the LICENSE file 13 * in the root directory of this software component. 14 * If no LICENSE file comes with this software, it is provided AS-IS. 15 * 16 ****************************************************************************** 17 */ 18 19 /* Define to prevent recursive inclusion -------------------------------------*/ 20 #ifndef STM32F1xx_LL_GPIO_H 21 #define STM32F1xx_LL_GPIO_H 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 27 /* Includes ------------------------------------------------------------------*/ 28 #include "stm32f1xx.h" 29 30 /** @addtogroup STM32F1xx_LL_Driver 31 * @{ 32 */ 33 34 #if defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) 35 36 /** @defgroup GPIO_LL GPIO 37 * @{ 38 */ 39 40 /* Private types -------------------------------------------------------------*/ 41 /* Private variables ---------------------------------------------------------*/ 42 /* Private constants ---------------------------------------------------------*/ 43 44 /** @defgroup GPIO_LL_Private_Constants GPIO Private Constants 45 * @{ 46 */ 47 /* Defines used for Pin Mask Initialization */ 48 #define GPIO_PIN_MASK_POS 8U 49 #define GPIO_PIN_NB 16U 50 /** 51 * @} 52 */ 53 54 /* Private macros ------------------------------------------------------------*/ 55 #if defined(USE_FULL_LL_DRIVER) 56 /** @defgroup GPIO_LL_Private_Macros GPIO Private Macros 57 * @{ 58 */ 59 60 /** 61 * @} 62 */ 63 #endif /*USE_FULL_LL_DRIVER*/ 64 65 /* Exported types ------------------------------------------------------------*/ 66 #if defined(USE_FULL_LL_DRIVER) 67 /** @defgroup GPIO_LL_ES_INIT GPIO Exported Init structures 68 * @{ 69 */ 70 71 /** 72 * @brief LL GPIO Init Structure definition 73 */ 74 typedef struct 75 { 76 uint32_t Pin; /*!< Specifies the GPIO pins to be configured. 77 This parameter can be any value of @ref GPIO_LL_EC_PIN */ 78 79 uint32_t Mode; /*!< Specifies the operating mode for the selected pins. 80 This parameter can be a value of @ref GPIO_LL_EC_MODE. 81 82 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinMode().*/ 83 84 uint32_t Speed; /*!< Specifies the speed for the selected pins. 85 This parameter can be a value of @ref GPIO_LL_EC_SPEED. 86 87 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinSpeed().*/ 88 89 uint32_t OutputType; /*!< Specifies the operating output type for the selected pins. 90 This parameter can be a value of @ref GPIO_LL_EC_OUTPUT. 91 92 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinOutputType().*/ 93 94 uint32_t Pull; /*!< Specifies the operating Pull-up/Pull down for the selected pins. 95 This parameter can be a value of @ref GPIO_LL_EC_PULL. 96 97 GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinPull().*/ 98 } LL_GPIO_InitTypeDef; 99 100 /** 101 * @} 102 */ 103 #endif /* USE_FULL_LL_DRIVER */ 104 105 /* Exported constants --------------------------------------------------------*/ 106 /** @defgroup GPIO_LL_Exported_Constants GPIO Exported Constants 107 * @{ 108 */ 109 110 /** @defgroup GPIO_LL_EC_PIN PIN 111 * @{ 112 */ 113 #define LL_GPIO_PIN_0 ((GPIO_BSRR_BS0 << GPIO_PIN_MASK_POS) | 0x00000001U) /*!< Select pin 0 */ 114 #define LL_GPIO_PIN_1 ((GPIO_BSRR_BS1 << GPIO_PIN_MASK_POS) | 0x00000002U) /*!< Select pin 1 */ 115 #define LL_GPIO_PIN_2 ((GPIO_BSRR_BS2 << GPIO_PIN_MASK_POS) | 0x00000004U) /*!< Select pin 2 */ 116 #define LL_GPIO_PIN_3 ((GPIO_BSRR_BS3 << GPIO_PIN_MASK_POS) | 0x00000008U) /*!< Select pin 3 */ 117 #define LL_GPIO_PIN_4 ((GPIO_BSRR_BS4 << GPIO_PIN_MASK_POS) | 0x00000010U) /*!< Select pin 4 */ 118 #define LL_GPIO_PIN_5 ((GPIO_BSRR_BS5 << GPIO_PIN_MASK_POS) | 0x00000020U) /*!< Select pin 5 */ 119 #define LL_GPIO_PIN_6 ((GPIO_BSRR_BS6 << GPIO_PIN_MASK_POS) | 0x00000040U) /*!< Select pin 6 */ 120 #define LL_GPIO_PIN_7 ((GPIO_BSRR_BS7 << GPIO_PIN_MASK_POS) | 0x00000080U) /*!< Select pin 7 */ 121 #define LL_GPIO_PIN_8 ((GPIO_BSRR_BS8 << GPIO_PIN_MASK_POS) | 0x04000001U) /*!< Select pin 8 */ 122 #define LL_GPIO_PIN_9 ((GPIO_BSRR_BS9 << GPIO_PIN_MASK_POS) | 0x04000002U) /*!< Select pin 9 */ 123 #define LL_GPIO_PIN_10 ((GPIO_BSRR_BS10 << GPIO_PIN_MASK_POS) | 0x04000004U) /*!< Select pin 10 */ 124 #define LL_GPIO_PIN_11 ((GPIO_BSRR_BS11 << GPIO_PIN_MASK_POS) | 0x04000008U) /*!< Select pin 11 */ 125 #define LL_GPIO_PIN_12 ((GPIO_BSRR_BS12 << GPIO_PIN_MASK_POS) | 0x04000010U) /*!< Select pin 12 */ 126 #define LL_GPIO_PIN_13 ((GPIO_BSRR_BS13 << GPIO_PIN_MASK_POS) | 0x04000020U) /*!< Select pin 13 */ 127 #define LL_GPIO_PIN_14 ((GPIO_BSRR_BS14 << GPIO_PIN_MASK_POS) | 0x04000040U) /*!< Select pin 14 */ 128 #define LL_GPIO_PIN_15 ((GPIO_BSRR_BS15 << GPIO_PIN_MASK_POS) | 0x04000080U) /*!< Select pin 15 */ 129 #define LL_GPIO_PIN_ALL (LL_GPIO_PIN_0 | LL_GPIO_PIN_1 | LL_GPIO_PIN_2 | \ 130 LL_GPIO_PIN_3 | LL_GPIO_PIN_4 | LL_GPIO_PIN_5 | \ 131 LL_GPIO_PIN_6 | LL_GPIO_PIN_7 | LL_GPIO_PIN_8 | \ 132 LL_GPIO_PIN_9 | LL_GPIO_PIN_10 | LL_GPIO_PIN_11 | \ 133 LL_GPIO_PIN_12 | LL_GPIO_PIN_13 | LL_GPIO_PIN_14 | \ 134 LL_GPIO_PIN_15) /*!< Select all pins */ 135 /** 136 * @} 137 */ 138 139 /** @defgroup GPIO_LL_EC_MODE Mode 140 * @{ 141 */ 142 #define LL_GPIO_MODE_ANALOG 0x00000000U /*!< Select analog mode */ 143 #define LL_GPIO_MODE_FLOATING GPIO_CRL_CNF0_0 /*!< Select floating mode */ 144 #define LL_GPIO_MODE_INPUT GPIO_CRL_CNF0_1 /*!< Select input mode */ 145 #define LL_GPIO_MODE_OUTPUT GPIO_CRL_MODE0_0 /*!< Select general purpose output mode */ 146 #define LL_GPIO_MODE_ALTERNATE (GPIO_CRL_CNF0_1 | GPIO_CRL_MODE0_0) /*!< Select alternate function mode */ 147 /** 148 * @} 149 */ 150 151 /** @defgroup GPIO_LL_EC_OUTPUT Output Type 152 * @{ 153 */ 154 #define LL_GPIO_OUTPUT_PUSHPULL 0x00000000U /*!< Select push-pull as output type */ 155 #define LL_GPIO_OUTPUT_OPENDRAIN GPIO_CRL_CNF0_0 /*!< Select open-drain as output type */ 156 /** 157 * @} 158 */ 159 160 /** @defgroup GPIO_LL_EC_SPEED Output Speed 161 * @{ 162 */ 163 #define LL_GPIO_MODE_OUTPUT_10MHz GPIO_CRL_MODE0_0 /*!< Select Output mode, max speed 10 MHz */ 164 #define LL_GPIO_MODE_OUTPUT_2MHz GPIO_CRL_MODE0_1 /*!< Select Output mode, max speed 20 MHz */ 165 #define LL_GPIO_MODE_OUTPUT_50MHz GPIO_CRL_MODE0 /*!< Select Output mode, max speed 50 MHz */ 166 /** 167 * @} 168 */ 169 170 #define LL_GPIO_SPEED_FREQ_LOW LL_GPIO_MODE_OUTPUT_2MHz /*!< Select I/O low output speed */ 171 #define LL_GPIO_SPEED_FREQ_MEDIUM LL_GPIO_MODE_OUTPUT_10MHz /*!< Select I/O medium output speed */ 172 #define LL_GPIO_SPEED_FREQ_HIGH LL_GPIO_MODE_OUTPUT_50MHz /*!< Select I/O high output speed */ 173 174 /** @defgroup GPIO_LL_EC_PULL Pull Up Pull Down 175 * @{ 176 */ 177 #define LL_GPIO_PULL_DOWN 0x00000000U /*!< Select I/O pull down */ 178 #define LL_GPIO_PULL_UP GPIO_ODR_ODR0 /*!< Select I/O pull up */ 179 180 /** 181 * @} 182 */ 183 184 /** @defgroup GPIO_LL_EVENTOUT_PIN EVENTOUT Pin 185 * @{ 186 */ 187 188 #define LL_GPIO_AF_EVENTOUT_PIN_0 AFIO_EVCR_PIN_PX0 /*!< EVENTOUT on pin 0 */ 189 #define LL_GPIO_AF_EVENTOUT_PIN_1 AFIO_EVCR_PIN_PX1 /*!< EVENTOUT on pin 1 */ 190 #define LL_GPIO_AF_EVENTOUT_PIN_2 AFIO_EVCR_PIN_PX2 /*!< EVENTOUT on pin 2 */ 191 #define LL_GPIO_AF_EVENTOUT_PIN_3 AFIO_EVCR_PIN_PX3 /*!< EVENTOUT on pin 3 */ 192 #define LL_GPIO_AF_EVENTOUT_PIN_4 AFIO_EVCR_PIN_PX4 /*!< EVENTOUT on pin 4 */ 193 #define LL_GPIO_AF_EVENTOUT_PIN_5 AFIO_EVCR_PIN_PX5 /*!< EVENTOUT on pin 5 */ 194 #define LL_GPIO_AF_EVENTOUT_PIN_6 AFIO_EVCR_PIN_PX6 /*!< EVENTOUT on pin 6 */ 195 #define LL_GPIO_AF_EVENTOUT_PIN_7 AFIO_EVCR_PIN_PX7 /*!< EVENTOUT on pin 7 */ 196 #define LL_GPIO_AF_EVENTOUT_PIN_8 AFIO_EVCR_PIN_PX8 /*!< EVENTOUT on pin 8 */ 197 #define LL_GPIO_AF_EVENTOUT_PIN_9 AFIO_EVCR_PIN_PX9 /*!< EVENTOUT on pin 9 */ 198 #define LL_GPIO_AF_EVENTOUT_PIN_10 AFIO_EVCR_PIN_PX10 /*!< EVENTOUT on pin 10 */ 199 #define LL_GPIO_AF_EVENTOUT_PIN_11 AFIO_EVCR_PIN_PX11 /*!< EVENTOUT on pin 11 */ 200 #define LL_GPIO_AF_EVENTOUT_PIN_12 AFIO_EVCR_PIN_PX12 /*!< EVENTOUT on pin 12 */ 201 #define LL_GPIO_AF_EVENTOUT_PIN_13 AFIO_EVCR_PIN_PX13 /*!< EVENTOUT on pin 13 */ 202 #define LL_GPIO_AF_EVENTOUT_PIN_14 AFIO_EVCR_PIN_PX14 /*!< EVENTOUT on pin 14 */ 203 #define LL_GPIO_AF_EVENTOUT_PIN_15 AFIO_EVCR_PIN_PX15 /*!< EVENTOUT on pin 15 */ 204 205 /** 206 * @} 207 */ 208 209 /** @defgroup GPIO_LL_EVENTOUT_PORT EVENTOUT Port 210 * @{ 211 */ 212 213 #define LL_GPIO_AF_EVENTOUT_PORT_A AFIO_EVCR_PORT_PA /*!< EVENTOUT on port A */ 214 #define LL_GPIO_AF_EVENTOUT_PORT_B AFIO_EVCR_PORT_PB /*!< EVENTOUT on port B */ 215 #define LL_GPIO_AF_EVENTOUT_PORT_C AFIO_EVCR_PORT_PC /*!< EVENTOUT on port C */ 216 #define LL_GPIO_AF_EVENTOUT_PORT_D AFIO_EVCR_PORT_PD /*!< EVENTOUT on port D */ 217 #define LL_GPIO_AF_EVENTOUT_PORT_E AFIO_EVCR_PORT_PE /*!< EVENTOUT on port E */ 218 219 /** 220 * @} 221 */ 222 223 /** @defgroup GPIO_LL_EC_EXTI_PORT GPIO EXTI PORT 224 * @{ 225 */ 226 #define LL_GPIO_AF_EXTI_PORTA 0U /*!< EXTI PORT A */ 227 #define LL_GPIO_AF_EXTI_PORTB 1U /*!< EXTI PORT B */ 228 #define LL_GPIO_AF_EXTI_PORTC 2U /*!< EXTI PORT C */ 229 #define LL_GPIO_AF_EXTI_PORTD 3U /*!< EXTI PORT D */ 230 #define LL_GPIO_AF_EXTI_PORTE 4U /*!< EXTI PORT E */ 231 #define LL_GPIO_AF_EXTI_PORTF 5U /*!< EXTI PORT F */ 232 #define LL_GPIO_AF_EXTI_PORTG 6U /*!< EXTI PORT G */ 233 /** 234 * @} 235 */ 236 237 /** @defgroup GPIO_LL_EC_EXTI_LINE GPIO EXTI LINE 238 * @{ 239 */ 240 #define LL_GPIO_AF_EXTI_LINE0 (0x000FU << 16U | 0U) /*!< EXTI_POSITION_0 | EXTICR[0] */ 241 #define LL_GPIO_AF_EXTI_LINE1 (0x00F0U << 16U | 0U) /*!< EXTI_POSITION_4 | EXTICR[0] */ 242 #define LL_GPIO_AF_EXTI_LINE2 (0x0F00U << 16U | 0U) /*!< EXTI_POSITION_8 | EXTICR[0] */ 243 #define LL_GPIO_AF_EXTI_LINE3 (0xF000U << 16U | 0U) /*!< EXTI_POSITION_12 | EXTICR[0] */ 244 #define LL_GPIO_AF_EXTI_LINE4 (0x000FU << 16U | 1U) /*!< EXTI_POSITION_0 | EXTICR[1] */ 245 #define LL_GPIO_AF_EXTI_LINE5 (0x00F0U << 16U | 1U) /*!< EXTI_POSITION_4 | EXTICR[1] */ 246 #define LL_GPIO_AF_EXTI_LINE6 (0x0F00U << 16U | 1U) /*!< EXTI_POSITION_8 | EXTICR[1] */ 247 #define LL_GPIO_AF_EXTI_LINE7 (0xF000U << 16U | 1U) /*!< EXTI_POSITION_12 | EXTICR[1] */ 248 #define LL_GPIO_AF_EXTI_LINE8 (0x000FU << 16U | 2U) /*!< EXTI_POSITION_0 | EXTICR[2] */ 249 #define LL_GPIO_AF_EXTI_LINE9 (0x00F0U << 16U | 2U) /*!< EXTI_POSITION_4 | EXTICR[2] */ 250 #define LL_GPIO_AF_EXTI_LINE10 (0x0F00U << 16U | 2U) /*!< EXTI_POSITION_8 | EXTICR[2] */ 251 #define LL_GPIO_AF_EXTI_LINE11 (0xF000U << 16U | 2U) /*!< EXTI_POSITION_12 | EXTICR[2] */ 252 #define LL_GPIO_AF_EXTI_LINE12 (0x000FU << 16U | 3U) /*!< EXTI_POSITION_0 | EXTICR[3] */ 253 #define LL_GPIO_AF_EXTI_LINE13 (0x00F0U << 16U | 3U) /*!< EXTI_POSITION_4 | EXTICR[3] */ 254 #define LL_GPIO_AF_EXTI_LINE14 (0x0F00U << 16U | 3U) /*!< EXTI_POSITION_8 | EXTICR[3] */ 255 #define LL_GPIO_AF_EXTI_LINE15 (0xF000U << 16U | 3U) /*!< EXTI_POSITION_12 | EXTICR[3] */ 256 /** 257 * @} 258 */ 259 260 /** 261 * @} 262 */ 263 264 /* Exported macro ------------------------------------------------------------*/ 265 /** @defgroup GPIO_LL_Exported_Macros GPIO Exported Macros 266 * @{ 267 */ 268 269 /** @defgroup GPIO_LL_EM_WRITE_READ Common Write and read registers Macros 270 * @{ 271 */ 272 273 /** 274 * @brief Write a value in GPIO register 275 * @param __INSTANCE__ GPIO Instance 276 * @param __REG__ Register to be written 277 * @param __VALUE__ Value to be written in the register 278 * @retval None 279 */ 280 #define LL_GPIO_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) 281 282 /** 283 * @brief Read a value in GPIO register 284 * @param __INSTANCE__ GPIO Instance 285 * @param __REG__ Register to be read 286 * @retval Register value 287 */ 288 #define LL_GPIO_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) 289 /** 290 * @} 291 */ 292 293 /** 294 * @} 295 */ 296 297 /* Exported functions --------------------------------------------------------*/ 298 /** @defgroup GPIO_LL_Exported_Functions GPIO Exported Functions 299 * @{ 300 */ 301 302 /** @defgroup GPIO_LL_EF_Port_Configuration Port Configuration 303 * @{ 304 */ 305 306 /** 307 * @brief Configure gpio mode for a dedicated pin on dedicated port. 308 * @note I/O mode can be Analog, Floating input, Input with pull-up/pull-down, General purpose Output, 309 * Alternate function Output. 310 * @note Warning: only one pin can be passed as parameter. 311 * @rmtoll CRL CNFy LL_GPIO_SetPinMode 312 * @rmtoll CRL MODEy LL_GPIO_SetPinMode 313 * @rmtoll CRH CNFy LL_GPIO_SetPinMode 314 * @rmtoll CRH MODEy LL_GPIO_SetPinMode 315 * @param GPIOx GPIO Port 316 * @param Pin This parameter can be one of the following values: 317 * @arg @ref LL_GPIO_PIN_0 318 * @arg @ref LL_GPIO_PIN_1 319 * @arg @ref LL_GPIO_PIN_2 320 * @arg @ref LL_GPIO_PIN_3 321 * @arg @ref LL_GPIO_PIN_4 322 * @arg @ref LL_GPIO_PIN_5 323 * @arg @ref LL_GPIO_PIN_6 324 * @arg @ref LL_GPIO_PIN_7 325 * @arg @ref LL_GPIO_PIN_8 326 * @arg @ref LL_GPIO_PIN_9 327 * @arg @ref LL_GPIO_PIN_10 328 * @arg @ref LL_GPIO_PIN_11 329 * @arg @ref LL_GPIO_PIN_12 330 * @arg @ref LL_GPIO_PIN_13 331 * @arg @ref LL_GPIO_PIN_14 332 * @arg @ref LL_GPIO_PIN_15 333 * @param Mode This parameter can be one of the following values: 334 * @arg @ref LL_GPIO_MODE_ANALOG 335 * @arg @ref LL_GPIO_MODE_FLOATING 336 * @arg @ref LL_GPIO_MODE_INPUT 337 * @arg @ref LL_GPIO_MODE_OUTPUT 338 * @arg @ref LL_GPIO_MODE_ALTERNATE 339 * @retval None 340 */ 341 __STATIC_INLINE void LL_GPIO_SetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Mode) 342 { 343 register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&GPIOx->CRL) + (Pin >> 24))); 344 MODIFY_REG(*pReg, ((GPIO_CRL_CNF0 | GPIO_CRL_MODE0) << (POSITION_VAL(Pin) * 4U)), (Mode << (POSITION_VAL(Pin) * 4U))); 345 } 346 347 /** 348 * @brief Return gpio mode for a dedicated pin on dedicated port. 349 * @note I/O mode can be Analog, Floating input, Input with pull-up/pull-down, General purpose Output, 350 * Alternate function Output. 351 * @note Warning: only one pin can be passed as parameter. 352 * @rmtoll CRL CNFy LL_GPIO_GetPinMode 353 * @rmtoll CRL MODEy LL_GPIO_GetPinMode 354 * @rmtoll CRH CNFy LL_GPIO_GetPinMode 355 * @rmtoll CRH MODEy LL_GPIO_GetPinMode 356 * @param GPIOx GPIO Port 357 * @param Pin This parameter can be one of the following values: 358 * @arg @ref LL_GPIO_PIN_0 359 * @arg @ref LL_GPIO_PIN_1 360 * @arg @ref LL_GPIO_PIN_2 361 * @arg @ref LL_GPIO_PIN_3 362 * @arg @ref LL_GPIO_PIN_4 363 * @arg @ref LL_GPIO_PIN_5 364 * @arg @ref LL_GPIO_PIN_6 365 * @arg @ref LL_GPIO_PIN_7 366 * @arg @ref LL_GPIO_PIN_8 367 * @arg @ref LL_GPIO_PIN_9 368 * @arg @ref LL_GPIO_PIN_10 369 * @arg @ref LL_GPIO_PIN_11 370 * @arg @ref LL_GPIO_PIN_12 371 * @arg @ref LL_GPIO_PIN_13 372 * @arg @ref LL_GPIO_PIN_14 373 * @arg @ref LL_GPIO_PIN_15 374 * @retval Returned value can be one of the following values: 375 * @arg @ref LL_GPIO_MODE_ANALOG 376 * @arg @ref LL_GPIO_MODE_FLOATING 377 * @arg @ref LL_GPIO_MODE_INPUT 378 * @arg @ref LL_GPIO_MODE_OUTPUT 379 * @arg @ref LL_GPIO_MODE_ALTERNATE 380 */ 381 __STATIC_INLINE uint32_t LL_GPIO_GetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin) 382 { 383 register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&GPIOx->CRL) + (Pin >> 24))); 384 return (READ_BIT(*pReg, ((GPIO_CRL_CNF0 | GPIO_CRL_MODE0) << (POSITION_VAL(Pin) * 4U))) >> (POSITION_VAL(Pin) * 4U)); 385 } 386 387 /** 388 * @brief Configure gpio speed for a dedicated pin on dedicated port. 389 * @note I/O speed can be Low, Medium or Fast speed. 390 * @note Warning: only one pin can be passed as parameter. 391 * @note Refer to datasheet for frequency specifications and the power 392 * supply and load conditions for each speed. 393 * @rmtoll CRL MODEy LL_GPIO_SetPinSpeed 394 * @rmtoll CRH MODEy LL_GPIO_SetPinSpeed 395 * @param GPIOx GPIO Port 396 * @param Pin This parameter can be one of the following values: 397 * @arg @ref LL_GPIO_PIN_0 398 * @arg @ref LL_GPIO_PIN_1 399 * @arg @ref LL_GPIO_PIN_2 400 * @arg @ref LL_GPIO_PIN_3 401 * @arg @ref LL_GPIO_PIN_4 402 * @arg @ref LL_GPIO_PIN_5 403 * @arg @ref LL_GPIO_PIN_6 404 * @arg @ref LL_GPIO_PIN_7 405 * @arg @ref LL_GPIO_PIN_8 406 * @arg @ref LL_GPIO_PIN_9 407 * @arg @ref LL_GPIO_PIN_10 408 * @arg @ref LL_GPIO_PIN_11 409 * @arg @ref LL_GPIO_PIN_12 410 * @arg @ref LL_GPIO_PIN_13 411 * @arg @ref LL_GPIO_PIN_14 412 * @arg @ref LL_GPIO_PIN_15 413 * @param Speed This parameter can be one of the following values: 414 * @arg @ref LL_GPIO_SPEED_FREQ_LOW 415 * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM 416 * @arg @ref LL_GPIO_SPEED_FREQ_HIGH 417 * @retval None 418 */ 419 __STATIC_INLINE void LL_GPIO_SetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Speed) 420 { 421 register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&GPIOx->CRL) + (Pin >> 24))); 422 MODIFY_REG(*pReg, (GPIO_CRL_MODE0 << (POSITION_VAL(Pin) * 4U)), 423 (Speed << (POSITION_VAL(Pin) * 4U))); 424 } 425 426 /** 427 * @brief Return gpio speed for a dedicated pin on dedicated port. 428 * @note I/O speed can be Low, Medium, Fast or High speed. 429 * @note Warning: only one pin can be passed as parameter. 430 * @note Refer to datasheet for frequency specifications and the power 431 * supply and load conditions for each speed. 432 * @rmtoll CRL MODEy LL_GPIO_GetPinSpeed 433 * @rmtoll CRH MODEy LL_GPIO_GetPinSpeed 434 * @param GPIOx GPIO Port 435 * @param Pin This parameter can be one of the following values: 436 * @arg @ref LL_GPIO_PIN_0 437 * @arg @ref LL_GPIO_PIN_1 438 * @arg @ref LL_GPIO_PIN_2 439 * @arg @ref LL_GPIO_PIN_3 440 * @arg @ref LL_GPIO_PIN_4 441 * @arg @ref LL_GPIO_PIN_5 442 * @arg @ref LL_GPIO_PIN_6 443 * @arg @ref LL_GPIO_PIN_7 444 * @arg @ref LL_GPIO_PIN_8 445 * @arg @ref LL_GPIO_PIN_9 446 * @arg @ref LL_GPIO_PIN_10 447 * @arg @ref LL_GPIO_PIN_11 448 * @arg @ref LL_GPIO_PIN_12 449 * @arg @ref LL_GPIO_PIN_13 450 * @arg @ref LL_GPIO_PIN_14 451 * @arg @ref LL_GPIO_PIN_15 452 * @retval Returned value can be one of the following values: 453 * @arg @ref LL_GPIO_SPEED_FREQ_LOW 454 * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM 455 * @arg @ref LL_GPIO_SPEED_FREQ_HIGH 456 */ 457 __STATIC_INLINE uint32_t LL_GPIO_GetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin) 458 { 459 register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&GPIOx->CRL) + (Pin >> 24))); 460 return (READ_BIT(*pReg, (GPIO_CRL_MODE0 << (POSITION_VAL(Pin) * 4U))) >> (POSITION_VAL(Pin) * 4U)); 461 } 462 463 /** 464 * @brief Configure gpio output type for several pins on dedicated port. 465 * @note Output type as to be set when gpio pin is in output or 466 * alternate modes. Possible type are Push-pull or Open-drain. 467 * @rmtoll CRL MODEy LL_GPIO_SetPinOutputType 468 * @rmtoll CRH MODEy LL_GPIO_SetPinOutputType 469 * @param GPIOx GPIO Port 470 * @param Pin This parameter can be a combination of the following values: 471 * @arg @ref LL_GPIO_PIN_0 472 * @arg @ref LL_GPIO_PIN_1 473 * @arg @ref LL_GPIO_PIN_2 474 * @arg @ref LL_GPIO_PIN_3 475 * @arg @ref LL_GPIO_PIN_4 476 * @arg @ref LL_GPIO_PIN_5 477 * @arg @ref LL_GPIO_PIN_6 478 * @arg @ref LL_GPIO_PIN_7 479 * @arg @ref LL_GPIO_PIN_8 480 * @arg @ref LL_GPIO_PIN_9 481 * @arg @ref LL_GPIO_PIN_10 482 * @arg @ref LL_GPIO_PIN_11 483 * @arg @ref LL_GPIO_PIN_12 484 * @arg @ref LL_GPIO_PIN_13 485 * @arg @ref LL_GPIO_PIN_14 486 * @arg @ref LL_GPIO_PIN_15 487 * @arg @ref LL_GPIO_PIN_ALL 488 * @param OutputType This parameter can be one of the following values: 489 * @arg @ref LL_GPIO_OUTPUT_PUSHPULL 490 * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN 491 * @retval None 492 */ 493 __STATIC_INLINE void LL_GPIO_SetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t OutputType) 494 { 495 register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&GPIOx->CRL) + (Pin >> 24))); 496 MODIFY_REG(*pReg, (GPIO_CRL_CNF0_0 << (POSITION_VAL(Pin) * 4U)), 497 (OutputType << (POSITION_VAL(Pin) * 4U))); 498 } 499 500 /** 501 * @brief Return gpio output type for several pins on dedicated port. 502 * @note Output type as to be set when gpio pin is in output or 503 * alternate modes. Possible type are Push-pull or Open-drain. 504 * @note Warning: only one pin can be passed as parameter. 505 * @rmtoll CRL MODEy LL_GPIO_GetPinOutputType 506 * @rmtoll CRH MODEy LL_GPIO_GetPinOutputType 507 * @param GPIOx GPIO Port 508 * @param Pin This parameter can be one of the following values: 509 * @arg @ref LL_GPIO_PIN_0 510 * @arg @ref LL_GPIO_PIN_1 511 * @arg @ref LL_GPIO_PIN_2 512 * @arg @ref LL_GPIO_PIN_3 513 * @arg @ref LL_GPIO_PIN_4 514 * @arg @ref LL_GPIO_PIN_5 515 * @arg @ref LL_GPIO_PIN_6 516 * @arg @ref LL_GPIO_PIN_7 517 * @arg @ref LL_GPIO_PIN_8 518 * @arg @ref LL_GPIO_PIN_9 519 * @arg @ref LL_GPIO_PIN_10 520 * @arg @ref LL_GPIO_PIN_11 521 * @arg @ref LL_GPIO_PIN_12 522 * @arg @ref LL_GPIO_PIN_13 523 * @arg @ref LL_GPIO_PIN_14 524 * @arg @ref LL_GPIO_PIN_15 525 * @arg @ref LL_GPIO_PIN_ALL 526 * @retval Returned value can be one of the following values: 527 * @arg @ref LL_GPIO_OUTPUT_PUSHPULL 528 * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN 529 */ 530 __STATIC_INLINE uint32_t LL_GPIO_GetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t Pin) 531 { 532 register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&GPIOx->CRL) + (Pin >> 24))); 533 return (READ_BIT(*pReg, (GPIO_CRL_CNF0_0 << (POSITION_VAL(Pin) * 4U))) >> (POSITION_VAL(Pin) * 4U)); 534 535 } 536 537 /** 538 * @brief Configure gpio pull-up or pull-down for a dedicated pin on a dedicated port. 539 * @note Warning: only one pin can be passed as parameter. 540 * @rmtoll ODR ODR LL_GPIO_SetPinPull 541 * @param GPIOx GPIO Port 542 * @param Pin This parameter can be one of the following values: 543 * @arg @ref LL_GPIO_PIN_0 544 * @arg @ref LL_GPIO_PIN_1 545 * @arg @ref LL_GPIO_PIN_2 546 * @arg @ref LL_GPIO_PIN_3 547 * @arg @ref LL_GPIO_PIN_4 548 * @arg @ref LL_GPIO_PIN_5 549 * @arg @ref LL_GPIO_PIN_6 550 * @arg @ref LL_GPIO_PIN_7 551 * @arg @ref LL_GPIO_PIN_8 552 * @arg @ref LL_GPIO_PIN_9 553 * @arg @ref LL_GPIO_PIN_10 554 * @arg @ref LL_GPIO_PIN_11 555 * @arg @ref LL_GPIO_PIN_12 556 * @arg @ref LL_GPIO_PIN_13 557 * @arg @ref LL_GPIO_PIN_14 558 * @arg @ref LL_GPIO_PIN_15 559 * @param Pull This parameter can be one of the following values: 560 * @arg @ref LL_GPIO_PULL_DOWN 561 * @arg @ref LL_GPIO_PULL_UP 562 * @retval None 563 */ 564 __STATIC_INLINE void LL_GPIO_SetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Pull) 565 { 566 MODIFY_REG(GPIOx->ODR, (Pin >> GPIO_PIN_MASK_POS), Pull << (POSITION_VAL(Pin >> GPIO_PIN_MASK_POS))); 567 } 568 569 /** 570 * @brief Return gpio pull-up or pull-down for a dedicated pin on a dedicated port 571 * @note Warning: only one pin can be passed as parameter. 572 * @rmtoll ODR ODR LL_GPIO_GetPinPull 573 * @param GPIOx GPIO Port 574 * @param Pin This parameter can be one of the following values: 575 * @arg @ref LL_GPIO_PIN_0 576 * @arg @ref LL_GPIO_PIN_1 577 * @arg @ref LL_GPIO_PIN_2 578 * @arg @ref LL_GPIO_PIN_3 579 * @arg @ref LL_GPIO_PIN_4 580 * @arg @ref LL_GPIO_PIN_5 581 * @arg @ref LL_GPIO_PIN_6 582 * @arg @ref LL_GPIO_PIN_7 583 * @arg @ref LL_GPIO_PIN_8 584 * @arg @ref LL_GPIO_PIN_9 585 * @arg @ref LL_GPIO_PIN_10 586 * @arg @ref LL_GPIO_PIN_11 587 * @arg @ref LL_GPIO_PIN_12 588 * @arg @ref LL_GPIO_PIN_13 589 * @arg @ref LL_GPIO_PIN_14 590 * @arg @ref LL_GPIO_PIN_15 591 * @retval Returned value can be one of the following values: 592 * @arg @ref LL_GPIO_PULL_DOWN 593 * @arg @ref LL_GPIO_PULL_UP 594 */ 595 __STATIC_INLINE uint32_t LL_GPIO_GetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin) 596 { 597 return (READ_BIT(GPIOx->ODR, (GPIO_ODR_ODR0 << (POSITION_VAL(Pin >> GPIO_PIN_MASK_POS)))) >> (POSITION_VAL(Pin >> GPIO_PIN_MASK_POS))); 598 } 599 600 /** 601 * @brief Lock configuration of several pins for a dedicated port. 602 * @note When the lock sequence has been applied on a port bit, the 603 * value of this port bit can no longer be modified until the 604 * next reset. 605 * @note Each lock bit freezes a specific configuration register 606 * (control and alternate function registers). 607 * @rmtoll LCKR LCKK LL_GPIO_LockPin 608 * @param GPIOx GPIO Port 609 * @param PinMask This parameter can be a combination of the following values: 610 * @arg @ref LL_GPIO_PIN_0 611 * @arg @ref LL_GPIO_PIN_1 612 * @arg @ref LL_GPIO_PIN_2 613 * @arg @ref LL_GPIO_PIN_3 614 * @arg @ref LL_GPIO_PIN_4 615 * @arg @ref LL_GPIO_PIN_5 616 * @arg @ref LL_GPIO_PIN_6 617 * @arg @ref LL_GPIO_PIN_7 618 * @arg @ref LL_GPIO_PIN_8 619 * @arg @ref LL_GPIO_PIN_9 620 * @arg @ref LL_GPIO_PIN_10 621 * @arg @ref LL_GPIO_PIN_11 622 * @arg @ref LL_GPIO_PIN_12 623 * @arg @ref LL_GPIO_PIN_13 624 * @arg @ref LL_GPIO_PIN_14 625 * @arg @ref LL_GPIO_PIN_15 626 * @arg @ref LL_GPIO_PIN_ALL 627 * @retval None 628 */ 629 __STATIC_INLINE void LL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) 630 { 631 __IO uint32_t temp; 632 WRITE_REG(GPIOx->LCKR, GPIO_LCKR_LCKK | ((PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU)); 633 WRITE_REG(GPIOx->LCKR, ((PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU)); 634 WRITE_REG(GPIOx->LCKR, GPIO_LCKR_LCKK | ((PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU)); 635 temp = READ_REG(GPIOx->LCKR); 636 (void) temp; 637 } 638 639 /** 640 * @brief Return 1 if all pins passed as parameter, of a dedicated port, are locked. else Return 0. 641 * @rmtoll LCKR LCKy LL_GPIO_IsPinLocked 642 * @param GPIOx GPIO Port 643 * @param PinMask This parameter can be a combination of the following values: 644 * @arg @ref LL_GPIO_PIN_0 645 * @arg @ref LL_GPIO_PIN_1 646 * @arg @ref LL_GPIO_PIN_2 647 * @arg @ref LL_GPIO_PIN_3 648 * @arg @ref LL_GPIO_PIN_4 649 * @arg @ref LL_GPIO_PIN_5 650 * @arg @ref LL_GPIO_PIN_6 651 * @arg @ref LL_GPIO_PIN_7 652 * @arg @ref LL_GPIO_PIN_8 653 * @arg @ref LL_GPIO_PIN_9 654 * @arg @ref LL_GPIO_PIN_10 655 * @arg @ref LL_GPIO_PIN_11 656 * @arg @ref LL_GPIO_PIN_12 657 * @arg @ref LL_GPIO_PIN_13 658 * @arg @ref LL_GPIO_PIN_14 659 * @arg @ref LL_GPIO_PIN_15 660 * @arg @ref LL_GPIO_PIN_ALL 661 * @retval State of bit (1 or 0). 662 */ 663 __STATIC_INLINE uint32_t LL_GPIO_IsPinLocked(GPIO_TypeDef *GPIOx, uint32_t PinMask) 664 { 665 return (READ_BIT(GPIOx->LCKR, ((PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU)) == ((PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU)); 666 } 667 668 /** 669 * @brief Return 1 if one of the pin of a dedicated port is locked. else return 0. 670 * @rmtoll LCKR LCKK LL_GPIO_IsAnyPinLocked 671 * @param GPIOx GPIO Port 672 * @retval State of bit (1 or 0). 673 */ 674 __STATIC_INLINE uint32_t LL_GPIO_IsAnyPinLocked(GPIO_TypeDef *GPIOx) 675 { 676 return (READ_BIT(GPIOx->LCKR, GPIO_LCKR_LCKK) == (GPIO_LCKR_LCKK)); 677 } 678 679 /** 680 * @} 681 */ 682 683 /** @defgroup GPIO_LL_EF_Data_Access Data Access 684 * @{ 685 */ 686 687 /** 688 * @brief Return full input data register value for a dedicated port. 689 * @rmtoll IDR IDy LL_GPIO_ReadInputPort 690 * @param GPIOx GPIO Port 691 * @retval Input data register value of port 692 */ 693 __STATIC_INLINE uint32_t LL_GPIO_ReadInputPort(GPIO_TypeDef *GPIOx) 694 { 695 return (READ_REG(GPIOx->IDR)); 696 } 697 698 /** 699 * @brief Return if input data level for several pins of dedicated port is high or low. 700 * @rmtoll IDR IDy LL_GPIO_IsInputPinSet 701 * @param GPIOx GPIO Port 702 * @param PinMask This parameter can be a combination of the following values: 703 * @arg @ref LL_GPIO_PIN_0 704 * @arg @ref LL_GPIO_PIN_1 705 * @arg @ref LL_GPIO_PIN_2 706 * @arg @ref LL_GPIO_PIN_3 707 * @arg @ref LL_GPIO_PIN_4 708 * @arg @ref LL_GPIO_PIN_5 709 * @arg @ref LL_GPIO_PIN_6 710 * @arg @ref LL_GPIO_PIN_7 711 * @arg @ref LL_GPIO_PIN_8 712 * @arg @ref LL_GPIO_PIN_9 713 * @arg @ref LL_GPIO_PIN_10 714 * @arg @ref LL_GPIO_PIN_11 715 * @arg @ref LL_GPIO_PIN_12 716 * @arg @ref LL_GPIO_PIN_13 717 * @arg @ref LL_GPIO_PIN_14 718 * @arg @ref LL_GPIO_PIN_15 719 * @arg @ref LL_GPIO_PIN_ALL 720 * @retval State of bit (1 or 0). 721 */ 722 __STATIC_INLINE uint32_t LL_GPIO_IsInputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask) 723 { 724 return (READ_BIT(GPIOx->IDR, (PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU) == ((PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU)); 725 } 726 727 /** 728 * @brief Write output data register for the port. 729 * @rmtoll ODR ODy LL_GPIO_WriteOutputPort 730 * @param GPIOx GPIO Port 731 * @param PortValue Level value for each pin of the port 732 * @retval None 733 */ 734 __STATIC_INLINE void LL_GPIO_WriteOutputPort(GPIO_TypeDef *GPIOx, uint32_t PortValue) 735 { 736 WRITE_REG(GPIOx->ODR, PortValue); 737 } 738 739 /** 740 * @brief Return full output data register value for a dedicated port. 741 * @rmtoll ODR ODy LL_GPIO_ReadOutputPort 742 * @param GPIOx GPIO Port 743 * @retval Output data register value of port 744 */ 745 __STATIC_INLINE uint32_t LL_GPIO_ReadOutputPort(GPIO_TypeDef *GPIOx) 746 { 747 return (uint32_t)(READ_REG(GPIOx->ODR)); 748 } 749 750 /** 751 * @brief Return if input data level for several pins of dedicated port is high or low. 752 * @rmtoll ODR ODy LL_GPIO_IsOutputPinSet 753 * @param GPIOx GPIO Port 754 * @param PinMask This parameter can be a combination of the following values: 755 * @arg @ref LL_GPIO_PIN_0 756 * @arg @ref LL_GPIO_PIN_1 757 * @arg @ref LL_GPIO_PIN_2 758 * @arg @ref LL_GPIO_PIN_3 759 * @arg @ref LL_GPIO_PIN_4 760 * @arg @ref LL_GPIO_PIN_5 761 * @arg @ref LL_GPIO_PIN_6 762 * @arg @ref LL_GPIO_PIN_7 763 * @arg @ref LL_GPIO_PIN_8 764 * @arg @ref LL_GPIO_PIN_9 765 * @arg @ref LL_GPIO_PIN_10 766 * @arg @ref LL_GPIO_PIN_11 767 * @arg @ref LL_GPIO_PIN_12 768 * @arg @ref LL_GPIO_PIN_13 769 * @arg @ref LL_GPIO_PIN_14 770 * @arg @ref LL_GPIO_PIN_15 771 * @arg @ref LL_GPIO_PIN_ALL 772 * @retval State of bit (1 or 0). 773 */ 774 __STATIC_INLINE uint32_t LL_GPIO_IsOutputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask) 775 { 776 return (READ_BIT(GPIOx->ODR, (PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU) == ((PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU)); 777 } 778 779 /** 780 * @brief Set several pins to high level on dedicated gpio port. 781 * @rmtoll BSRR BSy LL_GPIO_SetOutputPin 782 * @param GPIOx GPIO Port 783 * @param PinMask This parameter can be a combination of the following values: 784 * @arg @ref LL_GPIO_PIN_0 785 * @arg @ref LL_GPIO_PIN_1 786 * @arg @ref LL_GPIO_PIN_2 787 * @arg @ref LL_GPIO_PIN_3 788 * @arg @ref LL_GPIO_PIN_4 789 * @arg @ref LL_GPIO_PIN_5 790 * @arg @ref LL_GPIO_PIN_6 791 * @arg @ref LL_GPIO_PIN_7 792 * @arg @ref LL_GPIO_PIN_8 793 * @arg @ref LL_GPIO_PIN_9 794 * @arg @ref LL_GPIO_PIN_10 795 * @arg @ref LL_GPIO_PIN_11 796 * @arg @ref LL_GPIO_PIN_12 797 * @arg @ref LL_GPIO_PIN_13 798 * @arg @ref LL_GPIO_PIN_14 799 * @arg @ref LL_GPIO_PIN_15 800 * @arg @ref LL_GPIO_PIN_ALL 801 * @retval None 802 */ 803 __STATIC_INLINE void LL_GPIO_SetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) 804 { 805 WRITE_REG(GPIOx->BSRR, (PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU); 806 } 807 808 /** 809 * @brief Set several pins to low level on dedicated gpio port. 810 * @rmtoll BRR BRy LL_GPIO_ResetOutputPin 811 * @param GPIOx GPIO Port 812 * @param PinMask This parameter can be a combination of the following values: 813 * @arg @ref LL_GPIO_PIN_0 814 * @arg @ref LL_GPIO_PIN_1 815 * @arg @ref LL_GPIO_PIN_2 816 * @arg @ref LL_GPIO_PIN_3 817 * @arg @ref LL_GPIO_PIN_4 818 * @arg @ref LL_GPIO_PIN_5 819 * @arg @ref LL_GPIO_PIN_6 820 * @arg @ref LL_GPIO_PIN_7 821 * @arg @ref LL_GPIO_PIN_8 822 * @arg @ref LL_GPIO_PIN_9 823 * @arg @ref LL_GPIO_PIN_10 824 * @arg @ref LL_GPIO_PIN_11 825 * @arg @ref LL_GPIO_PIN_12 826 * @arg @ref LL_GPIO_PIN_13 827 * @arg @ref LL_GPIO_PIN_14 828 * @arg @ref LL_GPIO_PIN_15 829 * @arg @ref LL_GPIO_PIN_ALL 830 * @retval None 831 */ 832 __STATIC_INLINE void LL_GPIO_ResetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) 833 { 834 WRITE_REG(GPIOx->BRR, (PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU); 835 } 836 837 /** 838 * @brief Toggle data value for several pin of dedicated port. 839 * @rmtoll ODR ODy LL_GPIO_TogglePin 840 * @param GPIOx GPIO Port 841 * @param PinMask This parameter can be a combination of the following values: 842 * @arg @ref LL_GPIO_PIN_0 843 * @arg @ref LL_GPIO_PIN_1 844 * @arg @ref LL_GPIO_PIN_2 845 * @arg @ref LL_GPIO_PIN_3 846 * @arg @ref LL_GPIO_PIN_4 847 * @arg @ref LL_GPIO_PIN_5 848 * @arg @ref LL_GPIO_PIN_6 849 * @arg @ref LL_GPIO_PIN_7 850 * @arg @ref LL_GPIO_PIN_8 851 * @arg @ref LL_GPIO_PIN_9 852 * @arg @ref LL_GPIO_PIN_10 853 * @arg @ref LL_GPIO_PIN_11 854 * @arg @ref LL_GPIO_PIN_12 855 * @arg @ref LL_GPIO_PIN_13 856 * @arg @ref LL_GPIO_PIN_14 857 * @arg @ref LL_GPIO_PIN_15 858 * @arg @ref LL_GPIO_PIN_ALL 859 * @retval None 860 */ 861 __STATIC_INLINE void LL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint32_t PinMask) 862 { 863 uint32_t odr = READ_REG(GPIOx->ODR); 864 uint32_t pinmask = ((PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU); 865 WRITE_REG(GPIOx->BSRR, ((odr & pinmask) << 16u) | (~odr & pinmask)); 866 } 867 868 /** 869 * @} 870 */ 871 872 /** @defgroup GPIO_AF_REMAPPING Alternate Function Remapping 873 * @brief This section propose definition to remap the alternate function to some other port/pins. 874 * @{ 875 */ 876 877 /** 878 * @brief Enable the remapping of SPI1 alternate function NSS, SCK, MISO and MOSI. 879 * @rmtoll MAPR SPI1_REMAP LL_GPIO_AF_EnableRemap_SPI1 880 * @note ENABLE: Remap (NSS/PA15, SCK/PB3, MISO/PB4, MOSI/PB5) 881 * @retval None 882 */ 883 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_SPI1(void) 884 { 885 SET_BIT(AFIO->MAPR, AFIO_MAPR_SPI1_REMAP | AFIO_MAPR_SWJ_CFG); 886 } 887 888 /** 889 * @brief Disable the remapping of SPI1 alternate function NSS, SCK, MISO and MOSI. 890 * @rmtoll MAPR SPI1_REMAP LL_GPIO_AF_DisableRemap_SPI1 891 * @note DISABLE: No remap (NSS/PA4, SCK/PA5, MISO/PA6, MOSI/PA7) 892 * @retval None 893 */ 894 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_SPI1(void) 895 { 896 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_SPI1_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); 897 } 898 899 /** 900 * @brief Check if SPI1 has been remapped or not 901 * @rmtoll MAPR SPI1_REMAP LL_GPIO_AF_IsEnabledRemap_SPI1 902 * @retval State of bit (1 or 0). 903 */ 904 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_SPI1(void) 905 { 906 return (READ_BIT(AFIO->MAPR, AFIO_MAPR_SPI1_REMAP) == (AFIO_MAPR_SPI1_REMAP)); 907 } 908 909 /** 910 * @brief Enable the remapping of I2C1 alternate function SCL and SDA. 911 * @rmtoll MAPR I2C1_REMAP LL_GPIO_AF_EnableRemap_I2C1 912 * @note ENABLE: Remap (SCL/PB8, SDA/PB9) 913 * @retval None 914 */ 915 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_I2C1(void) 916 { 917 SET_BIT(AFIO->MAPR, AFIO_MAPR_I2C1_REMAP | AFIO_MAPR_SWJ_CFG); 918 } 919 920 /** 921 * @brief Disable the remapping of I2C1 alternate function SCL and SDA. 922 * @rmtoll MAPR I2C1_REMAP LL_GPIO_AF_DisableRemap_I2C1 923 * @note DISABLE: No remap (SCL/PB6, SDA/PB7) 924 * @retval None 925 */ 926 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_I2C1(void) 927 { 928 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_I2C1_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); 929 } 930 931 /** 932 * @brief Check if I2C1 has been remapped or not 933 * @rmtoll MAPR I2C1_REMAP LL_GPIO_AF_IsEnabledRemap_I2C1 934 * @retval State of bit (1 or 0). 935 */ 936 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_I2C1(void) 937 { 938 return (READ_BIT(AFIO->MAPR, AFIO_MAPR_I2C1_REMAP) == (AFIO_MAPR_I2C1_REMAP)); 939 } 940 941 /** 942 * @brief Enable the remapping of USART1 alternate function TX and RX. 943 * @rmtoll MAPR USART1_REMAP LL_GPIO_AF_EnableRemap_USART1 944 * @note ENABLE: Remap (TX/PB6, RX/PB7) 945 * @retval None 946 */ 947 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_USART1(void) 948 { 949 SET_BIT(AFIO->MAPR, AFIO_MAPR_USART1_REMAP | AFIO_MAPR_SWJ_CFG); 950 } 951 952 /** 953 * @brief Disable the remapping of USART1 alternate function TX and RX. 954 * @rmtoll MAPR USART1_REMAP LL_GPIO_AF_DisableRemap_USART1 955 * @note DISABLE: No remap (TX/PA9, RX/PA10) 956 * @retval None 957 */ 958 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_USART1(void) 959 { 960 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_USART1_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); 961 } 962 963 /** 964 * @brief Check if USART1 has been remapped or not 965 * @rmtoll MAPR USART1_REMAP LL_GPIO_AF_IsEnabledRemap_USART1 966 * @retval State of bit (1 or 0). 967 */ 968 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_USART1(void) 969 { 970 return (READ_BIT(AFIO->MAPR, AFIO_MAPR_USART1_REMAP) == (AFIO_MAPR_USART1_REMAP)); 971 } 972 973 /** 974 * @brief Enable the remapping of USART2 alternate function CTS, RTS, CK, TX and RX. 975 * @rmtoll MAPR USART2_REMAP LL_GPIO_AF_EnableRemap_USART2 976 * @note ENABLE: Remap (CTS/PD3, RTS/PD4, TX/PD5, RX/PD6, CK/PD7) 977 * @retval None 978 */ 979 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_USART2(void) 980 { 981 SET_BIT(AFIO->MAPR, AFIO_MAPR_USART2_REMAP | AFIO_MAPR_SWJ_CFG); 982 } 983 984 /** 985 * @brief Disable the remapping of USART2 alternate function CTS, RTS, CK, TX and RX. 986 * @rmtoll MAPR USART2_REMAP LL_GPIO_AF_DisableRemap_USART2 987 * @note DISABLE: No remap (CTS/PA0, RTS/PA1, TX/PA2, RX/PA3, CK/PA4) 988 * @retval None 989 */ 990 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_USART2(void) 991 { 992 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_USART2_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); 993 } 994 995 /** 996 * @brief Check if USART2 has been remapped or not 997 * @rmtoll MAPR USART2_REMAP LL_GPIO_AF_IsEnabledRemap_USART2 998 * @retval State of bit (1 or 0). 999 */ 1000 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_USART2(void) 1001 { 1002 return (READ_BIT(AFIO->MAPR, AFIO_MAPR_USART2_REMAP) == (AFIO_MAPR_USART2_REMAP)); 1003 } 1004 1005 #if defined (AFIO_MAPR_USART3_REMAP) 1006 /** 1007 * @brief Enable the remapping of USART3 alternate function CTS, RTS, CK, TX and RX. 1008 * @rmtoll MAPR USART3_REMAP LL_GPIO_AF_EnableRemap_USART3 1009 * @note ENABLE: Full remap (TX/PD8, RX/PD9, CK/PD10, CTS/PD11, RTS/PD12) 1010 * @retval None 1011 */ 1012 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_USART3(void) 1013 { 1014 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_USART3_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_USART3_REMAP_FULLREMAP | AFIO_MAPR_SWJ_CFG)); 1015 } 1016 1017 /** 1018 * @brief Enable the remapping of USART3 alternate function CTS, RTS, CK, TX and RX. 1019 * @rmtoll MAPR USART3_REMAP LL_GPIO_AF_RemapPartial_USART3 1020 * @note PARTIAL: Partial remap (TX/PC10, RX/PC11, CK/PC12, CTS/PB13, RTS/PB14) 1021 * @retval None 1022 */ 1023 __STATIC_INLINE void LL_GPIO_AF_RemapPartial_USART3(void) 1024 { 1025 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_USART3_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_USART3_REMAP_PARTIALREMAP | AFIO_MAPR_SWJ_CFG)); 1026 } 1027 1028 /** 1029 * @brief Disable the remapping of USART3 alternate function CTS, RTS, CK, TX and RX. 1030 * @rmtoll MAPR USART3_REMAP LL_GPIO_AF_DisableRemap_USART3 1031 * @note DISABLE: No remap (TX/PB10, RX/PB11, CK/PB12, CTS/PB13, RTS/PB14) 1032 * @retval None 1033 */ 1034 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_USART3(void) 1035 { 1036 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_USART3_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_USART3_REMAP_NOREMAP | AFIO_MAPR_SWJ_CFG)); 1037 } 1038 #endif 1039 1040 /** 1041 * @brief Enable the remapping of TIM1 alternate function channels 1 to 4, 1N to 3N, external trigger (ETR) and Break input (BKIN) 1042 * @rmtoll MAPR TIM1_REMAP LL_GPIO_AF_EnableRemap_TIM1 1043 * @note ENABLE: Full remap (ETR/PE7, CH1/PE9, CH2/PE11, CH3/PE13, CH4/PE14, BKIN/PE15, CH1N/PE8, CH2N/PE10, CH3N/PE12) 1044 * @retval None 1045 */ 1046 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM1(void) 1047 { 1048 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM1_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM1_REMAP_FULLREMAP | AFIO_MAPR_SWJ_CFG)); 1049 } 1050 1051 /** 1052 * @brief Enable the remapping of TIM1 alternate function channels 1 to 4, 1N to 3N, external trigger (ETR) and Break input (BKIN) 1053 * @rmtoll MAPR TIM1_REMAP LL_GPIO_AF_RemapPartial_TIM1 1054 * @note PARTIAL: Partial remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PA6, CH1N/PA7, CH2N/PB0, CH3N/PB1) 1055 * @retval None 1056 */ 1057 __STATIC_INLINE void LL_GPIO_AF_RemapPartial_TIM1(void) 1058 { 1059 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM1_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM1_REMAP_PARTIALREMAP | AFIO_MAPR_SWJ_CFG)); 1060 } 1061 1062 /** 1063 * @brief Disable the remapping of TIM1 alternate function channels 1 to 4, 1N to 3N, external trigger (ETR) and Break input (BKIN) 1064 * @rmtoll MAPR TIM1_REMAP LL_GPIO_AF_DisableRemap_TIM1 1065 * @note DISABLE: No remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PB12, CH1N/PB13, CH2N/PB14, CH3N/PB15) 1066 * @retval None 1067 */ 1068 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM1(void) 1069 { 1070 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM1_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM1_REMAP_NOREMAP | AFIO_MAPR_SWJ_CFG)); 1071 } 1072 1073 /** 1074 * @brief Enable the remapping of TIM2 alternate function channels 1 to 4 and external trigger (ETR) 1075 * @rmtoll MAPR TIM2_REMAP LL_GPIO_AF_EnableRemap_TIM2 1076 * @note ENABLE: Full remap (CH1/ETR/PA15, CH2/PB3, CH3/PB10, CH4/PB11) 1077 * @retval None 1078 */ 1079 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM2(void) 1080 { 1081 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM2_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM2_REMAP_FULLREMAP | AFIO_MAPR_SWJ_CFG)); 1082 } 1083 1084 /** 1085 * @brief Enable the remapping of TIM2 alternate function channels 1 to 4 and external trigger (ETR) 1086 * @rmtoll MAPR TIM2_REMAP LL_GPIO_AF_RemapPartial2_TIM2 1087 * @note PARTIAL_2: Partial remap (CH1/ETR/PA0, CH2/PA1, CH3/PB10, CH4/PB11) 1088 * @retval None 1089 */ 1090 __STATIC_INLINE void LL_GPIO_AF_RemapPartial2_TIM2(void) 1091 { 1092 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM2_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM2_REMAP_PARTIALREMAP2 | AFIO_MAPR_SWJ_CFG)); 1093 } 1094 1095 /** 1096 * @brief Enable the remapping of TIM2 alternate function channels 1 to 4 and external trigger (ETR) 1097 * @rmtoll MAPR TIM2_REMAP LL_GPIO_AF_RemapPartial1_TIM2 1098 * @note PARTIAL_1: Partial remap (CH1/ETR/PA15, CH2/PB3, CH3/PA2, CH4/PA3) 1099 * @retval None 1100 */ 1101 __STATIC_INLINE void LL_GPIO_AF_RemapPartial1_TIM2(void) 1102 { 1103 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM2_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1 | AFIO_MAPR_SWJ_CFG)); 1104 } 1105 1106 /** 1107 * @brief Disable the remapping of TIM2 alternate function channels 1 to 4 and external trigger (ETR) 1108 * @rmtoll MAPR TIM2_REMAP LL_GPIO_AF_DisableRemap_TIM2 1109 * @note DISABLE: No remap (CH1/ETR/PA0, CH2/PA1, CH3/PA2, CH4/PA3) 1110 * @retval None 1111 */ 1112 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM2(void) 1113 { 1114 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM2_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM2_REMAP_NOREMAP | AFIO_MAPR_SWJ_CFG)); 1115 } 1116 1117 /** 1118 * @brief Enable the remapping of TIM3 alternate function channels 1 to 4 1119 * @rmtoll MAPR TIM3_REMAP LL_GPIO_AF_EnableRemap_TIM3 1120 * @note ENABLE: Full remap (CH1/PC6, CH2/PC7, CH3/PC8, CH4/PC9) 1121 * @note TIM3_ETR on PE0 is not re-mapped. 1122 * @retval None 1123 */ 1124 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM3(void) 1125 { 1126 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM3_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM3_REMAP_FULLREMAP | AFIO_MAPR_SWJ_CFG)); 1127 } 1128 1129 /** 1130 * @brief Enable the remapping of TIM3 alternate function channels 1 to 4 1131 * @rmtoll MAPR TIM3_REMAP LL_GPIO_AF_RemapPartial_TIM3 1132 * @note PARTIAL: Partial remap (CH1/PB4, CH2/PB5, CH3/PB0, CH4/PB1) 1133 * @note TIM3_ETR on PE0 is not re-mapped. 1134 * @retval None 1135 */ 1136 __STATIC_INLINE void LL_GPIO_AF_RemapPartial_TIM3(void) 1137 { 1138 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM3_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM3_REMAP_PARTIALREMAP | AFIO_MAPR_SWJ_CFG)); 1139 } 1140 1141 /** 1142 * @brief Disable the remapping of TIM3 alternate function channels 1 to 4 1143 * @rmtoll MAPR TIM3_REMAP LL_GPIO_AF_DisableRemap_TIM3 1144 * @note DISABLE: No remap (CH1/PA6, CH2/PA7, CH3/PB0, CH4/PB1) 1145 * @note TIM3_ETR on PE0 is not re-mapped. 1146 * @retval None 1147 */ 1148 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM3(void) 1149 { 1150 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM3_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM3_REMAP_NOREMAP | AFIO_MAPR_SWJ_CFG)); 1151 } 1152 1153 #if defined(AFIO_MAPR_TIM4_REMAP) 1154 /** 1155 * @brief Enable the remapping of TIM4 alternate function channels 1 to 4. 1156 * @rmtoll MAPR TIM4_REMAP LL_GPIO_AF_EnableRemap_TIM4 1157 * @note ENABLE: Full remap (TIM4_CH1/PD12, TIM4_CH2/PD13, TIM4_CH3/PD14, TIM4_CH4/PD15) 1158 * @note TIM4_ETR on PE0 is not re-mapped. 1159 * @retval None 1160 */ 1161 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM4(void) 1162 { 1163 SET_BIT(AFIO->MAPR, AFIO_MAPR_TIM4_REMAP | AFIO_MAPR_SWJ_CFG); 1164 } 1165 /** 1166 * @brief Disable the remapping of TIM4 alternate function channels 1 to 4. 1167 * @rmtoll MAPR TIM4_REMAP LL_GPIO_AF_DisableRemap_TIM4 1168 * @note DISABLE: No remap (TIM4_CH1/PB6, TIM4_CH2/PB7, TIM4_CH3/PB8, TIM4_CH4/PB9) 1169 * @note TIM4_ETR on PE0 is not re-mapped. 1170 * @retval None 1171 */ 1172 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM4(void) 1173 { 1174 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM4_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); 1175 } 1176 1177 /** 1178 * @brief Check if TIM4 has been remapped or not 1179 * @rmtoll MAPR TIM4_REMAP LL_GPIO_AF_IsEnabledRemap_TIM4 1180 * @retval State of bit (1 or 0). 1181 */ 1182 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM4(void) 1183 { 1184 return (READ_BIT(AFIO->MAPR, AFIO_MAPR_TIM4_REMAP) == (AFIO_MAPR_TIM4_REMAP)); 1185 } 1186 #endif 1187 1188 #if defined(AFIO_MAPR_CAN_REMAP_REMAP1) 1189 1190 /** 1191 * @brief Enable or disable the remapping of CAN alternate function CAN_RX and CAN_TX in devices with a single CAN interface. 1192 * @rmtoll MAPR CAN_REMAP LL_GPIO_AF_RemapPartial1_CAN1 1193 * @note CASE 1: CAN_RX mapped to PA11, CAN_TX mapped to PA12 1194 * @retval None 1195 */ 1196 __STATIC_INLINE void LL_GPIO_AF_RemapPartial1_CAN1(void) 1197 { 1198 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_CAN_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_CAN_REMAP_REMAP1 | AFIO_MAPR_SWJ_CFG)); 1199 } 1200 1201 /** 1202 * @brief Enable or disable the remapping of CAN alternate function CAN_RX and CAN_TX in devices with a single CAN interface. 1203 * @rmtoll MAPR CAN_REMAP LL_GPIO_AF_RemapPartial2_CAN1 1204 * @note CASE 2: CAN_RX mapped to PB8, CAN_TX mapped to PB9 (not available on 36-pin package) 1205 * @retval None 1206 */ 1207 __STATIC_INLINE void LL_GPIO_AF_RemapPartial2_CAN1(void) 1208 { 1209 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_CAN_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_CAN_REMAP_REMAP2 | AFIO_MAPR_SWJ_CFG)); 1210 } 1211 1212 /** 1213 * @brief Enable or disable the remapping of CAN alternate function CAN_RX and CAN_TX in devices with a single CAN interface. 1214 * @rmtoll MAPR CAN_REMAP LL_GPIO_AF_RemapPartial3_CAN1 1215 * @note CASE 3: CAN_RX mapped to PD0, CAN_TX mapped to PD1 1216 * @retval None 1217 */ 1218 __STATIC_INLINE void LL_GPIO_AF_RemapPartial3_CAN1(void) 1219 { 1220 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_CAN_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_CAN_REMAP_REMAP3 | AFIO_MAPR_SWJ_CFG)); 1221 } 1222 #endif 1223 1224 /** 1225 * @brief Enable the remapping of PD0 and PD1. When the HSE oscillator is not used 1226 * (application running on internal 8 MHz RC) PD0 and PD1 can be mapped on OSC_IN and 1227 * OSC_OUT. This is available only on 36, 48 and 64 pins packages (PD0 and PD1 are available 1228 * on 100-pin and 144-pin packages, no need for remapping). 1229 * @rmtoll MAPR PD01_REMAP LL_GPIO_AF_EnableRemap_PD01 1230 * @note ENABLE: PD0 remapped on OSC_IN, PD1 remapped on OSC_OUT. 1231 * @retval None 1232 */ 1233 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_PD01(void) 1234 { 1235 SET_BIT(AFIO->MAPR, AFIO_MAPR_PD01_REMAP | AFIO_MAPR_SWJ_CFG); 1236 } 1237 1238 /** 1239 * @brief Disable the remapping of PD0 and PD1. When the HSE oscillator is not used 1240 * (application running on internal 8 MHz RC) PD0 and PD1 can be mapped on OSC_IN and 1241 * OSC_OUT. This is available only on 36, 48 and 64 pins packages (PD0 and PD1 are available 1242 * on 100-pin and 144-pin packages, no need for remapping). 1243 * @rmtoll MAPR PD01_REMAP LL_GPIO_AF_DisableRemap_PD01 1244 * @note DISABLE: No remapping of PD0 and PD1 1245 * @retval None 1246 */ 1247 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_PD01(void) 1248 { 1249 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_PD01_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); 1250 } 1251 1252 /** 1253 * @brief Check if PD01 has been remapped or not 1254 * @rmtoll MAPR PD01_REMAP LL_GPIO_AF_IsEnabledRemap_PD01 1255 * @retval State of bit (1 or 0). 1256 */ 1257 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_PD01(void) 1258 { 1259 return (READ_BIT(AFIO->MAPR, AFIO_MAPR_PD01_REMAP) == (AFIO_MAPR_PD01_REMAP)); 1260 } 1261 1262 #if defined(AFIO_MAPR_TIM5CH4_IREMAP) 1263 /** 1264 * @brief Enable the remapping of TIM5CH4. 1265 * @rmtoll MAPR TIM5CH4_IREMAP LL_GPIO_AF_EnableRemap_TIM5CH4 1266 * @note ENABLE: LSI internal clock is connected to TIM5_CH4 input for calibration purpose. 1267 * @note This function is available only in high density value line devices. 1268 * @retval None 1269 */ 1270 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM5CH4(void) 1271 { 1272 SET_BIT(AFIO->MAPR, AFIO_MAPR_TIM5CH4_IREMAP | AFIO_MAPR_SWJ_CFG); 1273 } 1274 1275 /** 1276 * @brief Disable the remapping of TIM5CH4. 1277 * @rmtoll MAPR TIM5CH4_IREMAP LL_GPIO_AF_DisableRemap_TIM5CH4 1278 * @note DISABLE: TIM5_CH4 is connected to PA3 1279 * @note This function is available only in high density value line devices. 1280 * @retval None 1281 */ 1282 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM5CH4(void) 1283 { 1284 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM5CH4_IREMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); 1285 } 1286 1287 /** 1288 * @brief Check if TIM5CH4 has been remapped or not 1289 * @rmtoll MAPR TIM5CH4_IREMAP LL_GPIO_AF_IsEnabledRemap_TIM5CH4 1290 * @retval State of bit (1 or 0). 1291 */ 1292 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM5CH4(void) 1293 { 1294 return (READ_BIT(AFIO->MAPR, AFIO_MAPR_TIM5CH4_IREMAP) == (AFIO_MAPR_TIM5CH4_IREMAP)); 1295 } 1296 #endif 1297 1298 #if defined(AFIO_MAPR_ETH_REMAP) 1299 /** 1300 * @brief Enable the remapping of Ethernet MAC connections with the PHY. 1301 * @rmtoll MAPR ETH_REMAP LL_GPIO_AF_EnableRemap_ETH 1302 * @note ENABLE: Remap (RX_DV-CRS_DV/PD8, RXD0/PD9, RXD1/PD10, RXD2/PD11, RXD3/PD12) 1303 * @note This bit is available only in connectivity line devices and is reserved otherwise. 1304 * @retval None 1305 */ 1306 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_ETH(void) 1307 { 1308 SET_BIT(AFIO->MAPR, AFIO_MAPR_ETH_REMAP | AFIO_MAPR_SWJ_CFG); 1309 } 1310 1311 /** 1312 * @brief Disable the remapping of Ethernet MAC connections with the PHY. 1313 * @rmtoll MAPR ETH_REMAP LL_GPIO_AF_DisableRemap_ETH 1314 * @note DISABLE: No remap (RX_DV-CRS_DV/PA7, RXD0/PC4, RXD1/PC5, RXD2/PB0, RXD3/PB1) 1315 * @note This bit is available only in connectivity line devices and is reserved otherwise. 1316 * @retval None 1317 */ 1318 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_ETH(void) 1319 { 1320 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_ETH_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); 1321 } 1322 1323 /** 1324 * @brief Check if ETH has been remapped or not 1325 * @rmtoll MAPR ETH_REMAP LL_GPIO_AF_IsEnabledRemap_ETH 1326 * @retval State of bit (1 or 0). 1327 */ 1328 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_ETH(void) 1329 { 1330 return (READ_BIT(AFIO->MAPR, AFIO_MAPR_ETH_REMAP) == (AFIO_MAPR_ETH_REMAP)); 1331 } 1332 #endif 1333 1334 #if defined(AFIO_MAPR_CAN2_REMAP) 1335 1336 /** 1337 * @brief Enable the remapping of CAN2 alternate function CAN2_RX and CAN2_TX. 1338 * @rmtoll MAPR CAN2_REMAP LL_GPIO_AF_EnableRemap_CAN2 1339 * @note ENABLE: Remap (CAN2_RX/PB5, CAN2_TX/PB6) 1340 * @note This bit is available only in connectivity line devices and is reserved otherwise. 1341 * @retval None 1342 */ 1343 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_CAN2(void) 1344 { 1345 SET_BIT(AFIO->MAPR, AFIO_MAPR_CAN2_REMAP | AFIO_MAPR_SWJ_CFG); 1346 } 1347 /** 1348 * @brief Disable the remapping of CAN2 alternate function CAN2_RX and CAN2_TX. 1349 * @rmtoll MAPR CAN2_REMAP LL_GPIO_AF_DisableRemap_CAN2 1350 * @note DISABLE: No remap (CAN2_RX/PB12, CAN2_TX/PB13) 1351 * @note This bit is available only in connectivity line devices and is reserved otherwise. 1352 * @retval None 1353 */ 1354 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_CAN2(void) 1355 { 1356 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_CAN2_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); 1357 } 1358 1359 /** 1360 * @brief Check if CAN2 has been remapped or not 1361 * @rmtoll MAPR CAN2_REMAP LL_GPIO_AF_IsEnabledRemap_CAN2 1362 * @retval State of bit (1 or 0). 1363 */ 1364 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_CAN2(void) 1365 { 1366 return (READ_BIT(AFIO->MAPR, AFIO_MAPR_CAN2_REMAP) == (AFIO_MAPR_CAN2_REMAP)); 1367 } 1368 #endif 1369 1370 #if defined(AFIO_MAPR_MII_RMII_SEL) 1371 /** 1372 * @brief Configures the Ethernet MAC internally for use with an external MII or RMII PHY. 1373 * @rmtoll MAPR MII_RMII_SEL LL_GPIO_AF_Select_ETH_RMII 1374 * @note ETH_RMII: Configure Ethernet MAC for connection with an RMII PHY 1375 * @note This bit is available only in connectivity line devices and is reserved otherwise. 1376 * @retval None 1377 */ 1378 __STATIC_INLINE void LL_GPIO_AF_Select_ETH_RMII(void) 1379 { 1380 SET_BIT(AFIO->MAPR, AFIO_MAPR_MII_RMII_SEL | AFIO_MAPR_SWJ_CFG); 1381 } 1382 1383 /** 1384 * @brief Configures the Ethernet MAC internally for use with an external MII or RMII PHY. 1385 * @rmtoll MAPR MII_RMII_SEL LL_GPIO_AF_Select_ETH_MII 1386 * @note ETH_MII: Configure Ethernet MAC for connection with an MII PHY 1387 * @note This bit is available only in connectivity line devices and is reserved otherwise. 1388 * @retval None 1389 */ 1390 __STATIC_INLINE void LL_GPIO_AF_Select_ETH_MII(void) 1391 { 1392 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_MII_RMII_SEL | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); 1393 } 1394 #endif 1395 1396 #if defined(AFIO_MAPR_ADC1_ETRGINJ_REMAP) 1397 /** 1398 * @brief Enable the remapping of ADC1_ETRGINJ (ADC 1 External trigger injected conversion). 1399 * @rmtoll MAPR ADC1_ETRGINJ_REMAP LL_GPIO_AF_EnableRemap_ADC1_ETRGINJ 1400 * @note ENABLE: ADC1 External Event injected conversion is connected to TIM8 Channel4. 1401 * @retval None 1402 */ 1403 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_ADC1_ETRGINJ(void) 1404 { 1405 SET_BIT(AFIO->MAPR, AFIO_MAPR_ADC1_ETRGINJ_REMAP | AFIO_MAPR_SWJ_CFG); 1406 } 1407 1408 /** 1409 * @brief Disable the remapping of ADC1_ETRGINJ (ADC 1 External trigger injected conversion). 1410 * @rmtoll MAPR ADC1_ETRGINJ_REMAP LL_GPIO_AF_DisableRemap_ADC1_ETRGINJ 1411 * @note DISABLE: ADC1 External trigger injected conversion is connected to EXTI15 1412 * @retval None 1413 */ 1414 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_ADC1_ETRGINJ(void) 1415 { 1416 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_ADC1_ETRGINJ_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); 1417 } 1418 1419 /** 1420 * @brief Check if ADC1_ETRGINJ has been remapped or not 1421 * @rmtoll MAPR ADC1_ETRGINJ_REMAP LL_GPIO_AF_IsEnabledRemap_ADC1_ETRGINJ 1422 * @retval State of bit (1 or 0). 1423 */ 1424 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_ADC1_ETRGINJ(void) 1425 { 1426 return (READ_BIT(AFIO->MAPR, AFIO_MAPR_ADC1_ETRGINJ_REMAP) == (AFIO_MAPR_ADC1_ETRGINJ_REMAP)); 1427 } 1428 #endif 1429 1430 #if defined(AFIO_MAPR_ADC1_ETRGREG_REMAP) 1431 /** 1432 * @brief Enable the remapping of ADC1_ETRGREG (ADC 1 External trigger regular conversion). 1433 * @rmtoll MAPR ADC1_ETRGREG_REMAP LL_GPIO_AF_EnableRemap_ADC1_ETRGREG 1434 * @note ENABLE: ADC1 External Event regular conversion is connected to TIM8 TRG0. 1435 * @retval None 1436 */ 1437 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_ADC1_ETRGREG(void) 1438 { 1439 SET_BIT(AFIO->MAPR, AFIO_MAPR_ADC1_ETRGREG_REMAP | AFIO_MAPR_SWJ_CFG); 1440 } 1441 1442 /** 1443 * @brief Disable the remapping of ADC1_ETRGREG (ADC 1 External trigger regular conversion). 1444 * @rmtoll MAPR ADC1_ETRGREG_REMAP LL_GPIO_AF_DisableRemap_ADC1_ETRGREG 1445 * @note DISABLE: ADC1 External trigger regular conversion is connected to EXTI11 1446 * @retval None 1447 */ 1448 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_ADC1_ETRGREG(void) 1449 { 1450 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_ADC1_ETRGREG_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); 1451 } 1452 1453 /** 1454 * @brief Check if ADC1_ETRGREG has been remapped or not 1455 * @rmtoll MAPR ADC1_ETRGREG_REMAP LL_GPIO_AF_IsEnabledRemap_ADC1_ETRGREG 1456 * @retval State of bit (1 or 0). 1457 */ 1458 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_ADC1_ETRGREG(void) 1459 { 1460 return (READ_BIT(AFIO->MAPR, AFIO_MAPR_ADC1_ETRGREG_REMAP) == (AFIO_MAPR_ADC1_ETRGREG_REMAP)); 1461 } 1462 #endif 1463 1464 #if defined(AFIO_MAPR_ADC2_ETRGINJ_REMAP) 1465 1466 /** 1467 * @brief Enable the remapping of ADC2_ETRGREG (ADC 2 External trigger injected conversion). 1468 * @rmtoll MAPR ADC2_ETRGINJ_REMAP LL_GPIO_AF_EnableRemap_ADC2_ETRGINJ 1469 * @note ENABLE: ADC2 External Event injected conversion is connected to TIM8 Channel4. 1470 * @retval None 1471 */ 1472 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_ADC2_ETRGINJ(void) 1473 { 1474 SET_BIT(AFIO->MAPR, AFIO_MAPR_ADC2_ETRGINJ_REMAP | AFIO_MAPR_SWJ_CFG); 1475 } 1476 1477 /** 1478 * @brief Disable the remapping of ADC2_ETRGREG (ADC 2 External trigger injected conversion). 1479 * @rmtoll MAPR ADC2_ETRGINJ_REMAP LL_GPIO_AF_DisableRemap_ADC2_ETRGINJ 1480 * @note DISABLE: ADC2 External trigger injected conversion is connected to EXTI15 1481 * @retval None 1482 */ 1483 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_ADC2_ETRGINJ(void) 1484 { 1485 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_ADC2_ETRGINJ_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); 1486 } 1487 1488 /** 1489 * @brief Check if ADC2_ETRGINJ has been remapped or not 1490 * @rmtoll MAPR ADC2_ETRGINJ_REMAP LL_GPIO_AF_IsEnabledRemap_ADC2_ETRGINJ 1491 * @retval State of bit (1 or 0). 1492 */ 1493 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_ADC2_ETRGINJ(void) 1494 { 1495 return (READ_BIT(AFIO->MAPR, AFIO_MAPR_ADC2_ETRGINJ_REMAP) == (AFIO_MAPR_ADC2_ETRGINJ_REMAP)); 1496 } 1497 #endif 1498 1499 #if defined (AFIO_MAPR_ADC2_ETRGREG_REMAP) 1500 1501 /** 1502 * @brief Enable the remapping of ADC2_ETRGREG (ADC 2 External trigger regular conversion). 1503 * @rmtoll MAPR ADC2_ETRGREG_REMAP LL_GPIO_AF_EnableRemap_ADC2_ETRGREG 1504 * @note ENABLE: ADC2 External Event regular conversion is connected to TIM8 TRG0. 1505 * @retval None 1506 */ 1507 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_ADC2_ETRGREG(void) 1508 { 1509 SET_BIT(AFIO->MAPR, AFIO_MAPR_ADC2_ETRGREG_REMAP | AFIO_MAPR_SWJ_CFG); 1510 } 1511 1512 /** 1513 * @brief Disable the remapping of ADC2_ETRGREG (ADC 2 External trigger regular conversion). 1514 * @rmtoll MAPR ADC2_ETRGREG_REMAP LL_GPIO_AF_DisableRemap_ADC2_ETRGREG 1515 * @note DISABLE: ADC2 External trigger regular conversion is connected to EXTI11 1516 * @retval None 1517 */ 1518 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_ADC2_ETRGREG(void) 1519 { 1520 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_ADC2_ETRGREG_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); 1521 } 1522 1523 /** 1524 * @brief Check if ADC2_ETRGREG has been remapped or not 1525 * @rmtoll MAPR ADC2_ETRGREG_REMAP LL_GPIO_AF_IsEnabledRemap_ADC2_ETRGREG 1526 * @retval State of bit (1 or 0). 1527 */ 1528 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_ADC2_ETRGREG(void) 1529 { 1530 return (READ_BIT(AFIO->MAPR, AFIO_MAPR_ADC2_ETRGREG_REMAP) == (AFIO_MAPR_ADC2_ETRGREG_REMAP)); 1531 } 1532 #endif 1533 1534 /** 1535 * @brief Enable the Serial wire JTAG configuration 1536 * @rmtoll MAPR SWJ_CFG LL_GPIO_AF_EnableRemap_SWJ 1537 * @note ENABLE: Full SWJ (JTAG-DP + SW-DP): Reset State 1538 * @retval None 1539 */ 1540 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_SWJ(void) 1541 { 1542 MODIFY_REG(AFIO->MAPR, AFIO_MAPR_SWJ_CFG, AFIO_MAPR_SWJ_CFG_RESET); 1543 } 1544 1545 /** 1546 * @brief Enable the Serial wire JTAG configuration 1547 * @rmtoll MAPR SWJ_CFG LL_GPIO_AF_Remap_SWJ_NONJTRST 1548 * @note NONJTRST: Full SWJ (JTAG-DP + SW-DP) but without NJTRST 1549 * @retval None 1550 */ 1551 __STATIC_INLINE void LL_GPIO_AF_Remap_SWJ_NONJTRST(void) 1552 { 1553 MODIFY_REG(AFIO->MAPR, AFIO_MAPR_SWJ_CFG, AFIO_MAPR_SWJ_CFG_NOJNTRST); 1554 } 1555 1556 /** 1557 * @brief Enable the Serial wire JTAG configuration 1558 * @rmtoll MAPR SWJ_CFG LL_GPIO_AF_Remap_SWJ_NOJTAG 1559 * @note NOJTAG: JTAG-DP Disabled and SW-DP Enabled 1560 * @retval None 1561 */ 1562 __STATIC_INLINE void LL_GPIO_AF_Remap_SWJ_NOJTAG(void) 1563 { 1564 MODIFY_REG(AFIO->MAPR, AFIO_MAPR_SWJ_CFG, AFIO_MAPR_SWJ_CFG_JTAGDISABLE); 1565 } 1566 1567 /** 1568 * @brief Disable the Serial wire JTAG configuration 1569 * @rmtoll MAPR SWJ_CFG LL_GPIO_AF_DisableRemap_SWJ 1570 * @note DISABLE: JTAG-DP Disabled and SW-DP Disabled 1571 * @retval None 1572 */ 1573 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_SWJ(void) 1574 { 1575 MODIFY_REG(AFIO->MAPR, AFIO_MAPR_SWJ_CFG, AFIO_MAPR_SWJ_CFG_DISABLE); 1576 } 1577 1578 #if defined(AFIO_MAPR_SPI3_REMAP) 1579 1580 /** 1581 * @brief Enable the remapping of SPI3 alternate functions SPI3_NSS/I2S3_WS, SPI3_SCK/I2S3_CK, SPI3_MISO, SPI3_MOSI/I2S3_SD. 1582 * @rmtoll MAPR SPI3_REMAP LL_GPIO_AF_EnableRemap_SPI3 1583 * @note ENABLE: Remap (SPI3_NSS-I2S3_WS/PA4, SPI3_SCK-I2S3_CK/PC10, SPI3_MISO/PC11, SPI3_MOSI-I2S3_SD/PC12) 1584 * @note This bit is available only in connectivity line devices and is reserved otherwise. 1585 * @retval None 1586 */ 1587 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_SPI3(void) 1588 { 1589 SET_BIT(AFIO->MAPR, AFIO_MAPR_SPI3_REMAP | AFIO_MAPR_SWJ_CFG); 1590 } 1591 1592 /** 1593 * @brief Disable the remapping of SPI3 alternate functions SPI3_NSS/I2S3_WS, SPI3_SCK/I2S3_CK, SPI3_MISO, SPI3_MOSI/I2S3_SD. 1594 * @rmtoll MAPR SPI3_REMAP LL_GPIO_AF_DisableRemap_SPI3 1595 * @note DISABLE: No remap (SPI3_NSS-I2S3_WS/PA15, SPI3_SCK-I2S3_CK/PB3, SPI3_MISO/PB4, SPI3_MOSI-I2S3_SD/PB5). 1596 * @note This bit is available only in connectivity line devices and is reserved otherwise. 1597 * @retval None 1598 */ 1599 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_SPI3(void) 1600 { 1601 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_SPI3_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); 1602 } 1603 1604 /** 1605 * @brief Check if SPI3 has been remapped or not 1606 * @rmtoll MAPR SPI3_REMAP LL_GPIO_AF_IsEnabledRemap_SPI3_REMAP 1607 * @retval State of bit (1 or 0). 1608 */ 1609 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_SPI3(void) 1610 { 1611 return (READ_BIT(AFIO->MAPR, AFIO_MAPR_SPI3_REMAP) == (AFIO_MAPR_SPI3_REMAP)); 1612 } 1613 #endif 1614 1615 #if defined(AFIO_MAPR_TIM2ITR1_IREMAP) 1616 1617 /** 1618 * @brief Control of TIM2_ITR1 internal mapping. 1619 * @rmtoll MAPR TIM2ITR1_IREMAP LL_GPIO_AF_Remap_TIM2ITR1_TO_USB 1620 * @note TO_USB: Connect USB OTG SOF (Start of Frame) output to TIM2_ITR1 for calibration purposes. 1621 * @note This bit is available only in connectivity line devices and is reserved otherwise. 1622 * @retval None 1623 */ 1624 __STATIC_INLINE void LL_GPIO_AF_Remap_TIM2ITR1_TO_USB(void) 1625 { 1626 SET_BIT(AFIO->MAPR, AFIO_MAPR_TIM2ITR1_IREMAP | AFIO_MAPR_SWJ_CFG); 1627 } 1628 1629 /** 1630 * @brief Control of TIM2_ITR1 internal mapping. 1631 * @rmtoll MAPR TIM2ITR1_IREMAP LL_GPIO_AF_Remap_TIM2ITR1_TO_ETH 1632 * @note TO_ETH: Connect TIM2_ITR1 internally to the Ethernet PTP output for calibration purposes. 1633 * @note This bit is available only in connectivity line devices and is reserved otherwise. 1634 * @retval None 1635 */ 1636 __STATIC_INLINE void LL_GPIO_AF_Remap_TIM2ITR1_TO_ETH(void) 1637 { 1638 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM2ITR1_IREMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); 1639 } 1640 #endif 1641 1642 #if defined(AFIO_MAPR_PTP_PPS_REMAP) 1643 1644 /** 1645 * @brief Enable the remapping of ADC2_ETRGREG (ADC 2 External trigger regular conversion). 1646 * @rmtoll MAPR PTP_PPS_REMAP LL_GPIO_AF_EnableRemap_ETH_PTP_PPS 1647 * @note ENABLE: PTP_PPS is output on PB5 pin. 1648 * @note This bit is available only in connectivity line devices and is reserved otherwise. 1649 * @retval None 1650 */ 1651 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_ETH_PTP_PPS(void) 1652 { 1653 SET_BIT(AFIO->MAPR, AFIO_MAPR_PTP_PPS_REMAP | AFIO_MAPR_SWJ_CFG); 1654 } 1655 1656 /** 1657 * @brief Disable the remapping of ADC2_ETRGREG (ADC 2 External trigger regular conversion). 1658 * @rmtoll MAPR PTP_PPS_REMAP LL_GPIO_AF_DisableRemap_ETH_PTP_PPS 1659 * @note DISABLE: PTP_PPS not output on PB5 pin. 1660 * @note This bit is available only in connectivity line devices and is reserved otherwise. 1661 * @retval None 1662 */ 1663 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_ETH_PTP_PPS(void) 1664 { 1665 MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_PTP_PPS_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); 1666 } 1667 #endif 1668 1669 #if defined(AFIO_MAPR2_TIM9_REMAP) 1670 1671 /** 1672 * @brief Enable the remapping of TIM9_CH1 and TIM9_CH2. 1673 * @rmtoll MAPR2 TIM9_REMAP LL_GPIO_AF_EnableRemap_TIM9 1674 * @note ENABLE: Remap (TIM9_CH1 on PE5 and TIM9_CH2 on PE6). 1675 * @retval None 1676 */ 1677 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM9(void) 1678 { 1679 SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM9_REMAP); 1680 } 1681 1682 /** 1683 * @brief Disable the remapping of TIM9_CH1 and TIM9_CH2. 1684 * @rmtoll MAPR2 TIM9_REMAP LL_GPIO_AF_DisableRemap_TIM9 1685 * @note DISABLE: No remap (TIM9_CH1 on PA2 and TIM9_CH2 on PA3). 1686 * @retval None 1687 */ 1688 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM9(void) 1689 { 1690 CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM9_REMAP); 1691 } 1692 1693 /** 1694 * @brief Check if TIM9_CH1 and TIM9_CH2 have been remapped or not 1695 * @rmtoll MAPR2 TIM9_REMAP LL_GPIO_AF_IsEnabledRemap_TIM9 1696 * @retval State of bit (1 or 0). 1697 */ 1698 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM9(void) 1699 { 1700 return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM9_REMAP) == (AFIO_MAPR2_TIM9_REMAP)); 1701 } 1702 #endif 1703 1704 #if defined(AFIO_MAPR2_TIM10_REMAP) 1705 1706 /** 1707 * @brief Enable the remapping of TIM10_CH1. 1708 * @rmtoll MAPR2 TIM10_REMAP LL_GPIO_AF_EnableRemap_TIM10 1709 * @note ENABLE: Remap (TIM10_CH1 on PF6). 1710 * @retval None 1711 */ 1712 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM10(void) 1713 { 1714 SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM10_REMAP); 1715 } 1716 1717 /** 1718 * @brief Disable the remapping of TIM10_CH1. 1719 * @rmtoll MAPR2 TIM10_REMAP LL_GPIO_AF_DisableRemap_TIM10 1720 * @note DISABLE: No remap (TIM10_CH1 on PB8). 1721 * @retval None 1722 */ 1723 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM10(void) 1724 { 1725 CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM10_REMAP); 1726 } 1727 1728 /** 1729 * @brief Check if TIM10_CH1 has been remapped or not 1730 * @rmtoll MAPR2 TIM10_REMAP LL_GPIO_AF_IsEnabledRemap_TIM10 1731 * @retval State of bit (1 or 0). 1732 */ 1733 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM10(void) 1734 { 1735 return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM10_REMAP) == (AFIO_MAPR2_TIM10_REMAP)); 1736 } 1737 #endif 1738 1739 #if defined(AFIO_MAPR2_TIM11_REMAP) 1740 /** 1741 * @brief Enable the remapping of TIM11_CH1. 1742 * @rmtoll MAPR2 TIM11_REMAP LL_GPIO_AF_EnableRemap_TIM11 1743 * @note ENABLE: Remap (TIM11_CH1 on PF7). 1744 * @retval None 1745 */ 1746 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM11(void) 1747 { 1748 SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM11_REMAP); 1749 } 1750 1751 /** 1752 * @brief Disable the remapping of TIM11_CH1. 1753 * @rmtoll MAPR2 TIM11_REMAP LL_GPIO_AF_DisableRemap_TIM11 1754 * @note DISABLE: No remap (TIM11_CH1 on PB9). 1755 * @retval None 1756 */ 1757 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM11(void) 1758 { 1759 CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM11_REMAP); 1760 } 1761 1762 /** 1763 * @brief Check if TIM11_CH1 has been remapped or not 1764 * @rmtoll MAPR2 TIM11_REMAP LL_GPIO_AF_IsEnabledRemap_TIM11 1765 * @retval State of bit (1 or 0). 1766 */ 1767 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM11(void) 1768 { 1769 return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM11_REMAP) == (AFIO_MAPR2_TIM11_REMAP)); 1770 } 1771 #endif 1772 1773 #if defined(AFIO_MAPR2_TIM13_REMAP) 1774 1775 /** 1776 * @brief Enable the remapping of TIM13_CH1. 1777 * @rmtoll MAPR2 TIM13_REMAP LL_GPIO_AF_EnableRemap_TIM13 1778 * @note ENABLE: Remap STM32F100:(TIM13_CH1 on PF8). Others:(TIM13_CH1 on PB0). 1779 * @retval None 1780 */ 1781 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM13(void) 1782 { 1783 SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM13_REMAP); 1784 } 1785 1786 /** 1787 * @brief Disable the remapping of TIM13_CH1. 1788 * @rmtoll MAPR2 TIM13_REMAP LL_GPIO_AF_DisableRemap_TIM13 1789 * @note DISABLE: No remap STM32F100:(TIM13_CH1 on PA6). Others:(TIM13_CH1 on PC8). 1790 * @retval None 1791 */ 1792 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM13(void) 1793 { 1794 CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM13_REMAP); 1795 } 1796 1797 /** 1798 * @brief Check if TIM13_CH1 has been remapped or not 1799 * @rmtoll MAPR2 TIM13_REMAP LL_GPIO_AF_IsEnabledRemap_TIM13 1800 * @retval State of bit (1 or 0). 1801 */ 1802 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM13(void) 1803 { 1804 return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM13_REMAP) == (AFIO_MAPR2_TIM13_REMAP)); 1805 } 1806 #endif 1807 1808 #if defined(AFIO_MAPR2_TIM14_REMAP) 1809 1810 /** 1811 * @brief Enable the remapping of TIM14_CH1. 1812 * @rmtoll MAPR2 TIM14_REMAP LL_GPIO_AF_EnableRemap_TIM14 1813 * @note ENABLE: Remap STM32F100:(TIM14_CH1 on PB1). Others:(TIM14_CH1 on PF9). 1814 * @retval None 1815 */ 1816 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM14(void) 1817 { 1818 SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM14_REMAP); 1819 } 1820 1821 /** 1822 * @brief Disable the remapping of TIM14_CH1. 1823 * @rmtoll MAPR2 TIM14_REMAP LL_GPIO_AF_DisableRemap_TIM14 1824 * @note DISABLE: No remap STM32F100:(TIM14_CH1 on PC9). Others:(TIM14_CH1 on PA7). 1825 * @retval None 1826 */ 1827 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM14(void) 1828 { 1829 CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM14_REMAP); 1830 } 1831 1832 /** 1833 * @brief Check if TIM14_CH1 has been remapped or not 1834 * @rmtoll MAPR2 TIM14_REMAP LL_GPIO_AF_IsEnabledRemap_TIM14 1835 * @retval State of bit (1 or 0). 1836 */ 1837 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM14(void) 1838 { 1839 return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM14_REMAP) == (AFIO_MAPR2_TIM14_REMAP)); 1840 } 1841 #endif 1842 1843 #if defined(AFIO_MAPR2_FSMC_NADV_REMAP) 1844 1845 /** 1846 * @brief Controls the use of the optional FSMC_NADV signal. 1847 * @rmtoll MAPR2 FSMC_NADV LL_GPIO_AF_Disconnect_FSMCNADV 1848 * @note DISCONNECTED: The NADV signal is not connected. The I/O pin can be used by another peripheral. 1849 * @retval None 1850 */ 1851 __STATIC_INLINE void LL_GPIO_AF_Disconnect_FSMCNADV(void) 1852 { 1853 SET_BIT(AFIO->MAPR2, AFIO_MAPR2_FSMC_NADV_REMAP); 1854 } 1855 1856 /** 1857 * @brief Controls the use of the optional FSMC_NADV signal. 1858 * @rmtoll MAPR2 FSMC_NADV LL_GPIO_AF_Connect_FSMCNADV 1859 * @note CONNECTED: The NADV signal is connected to the output (default). 1860 * @retval None 1861 */ 1862 __STATIC_INLINE void LL_GPIO_AF_Connect_FSMCNADV(void) 1863 { 1864 CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_FSMC_NADV_REMAP); 1865 } 1866 #endif 1867 1868 #if defined(AFIO_MAPR2_TIM15_REMAP) 1869 1870 /** 1871 * @brief Enable the remapping of TIM15_CH1 and TIM15_CH2. 1872 * @rmtoll MAPR2 TIM15_REMAP LL_GPIO_AF_EnableRemap_TIM15 1873 * @note ENABLE: Remap (TIM15_CH1 on PB14 and TIM15_CH2 on PB15). 1874 * @retval None 1875 */ 1876 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM15(void) 1877 { 1878 SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM15_REMAP); 1879 } 1880 /** 1881 * @brief Disable the remapping of TIM15_CH1 and TIM15_CH2. 1882 * @rmtoll MAPR2 TIM15_REMAP LL_GPIO_AF_DisableRemap_TIM15 1883 * @note DISABLE: No remap (TIM15_CH1 on PA2 and TIM15_CH2 on PA3). 1884 * @retval None 1885 */ 1886 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM15(void) 1887 { 1888 CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM15_REMAP); 1889 } 1890 1891 /** 1892 * @brief Check if TIM15_CH1 has been remapped or not 1893 * @rmtoll MAPR2 TIM15_REMAP LL_GPIO_AF_IsEnabledRemap_TIM15 1894 * @retval State of bit (1 or 0). 1895 */ 1896 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM15(void) 1897 { 1898 return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM15_REMAP) == (AFIO_MAPR2_TIM15_REMAP)); 1899 } 1900 #endif 1901 1902 #if defined(AFIO_MAPR2_TIM16_REMAP) 1903 1904 /** 1905 * @brief Enable the remapping of TIM16_CH1. 1906 * @rmtoll MAPR2 TIM16_REMAP LL_GPIO_AF_EnableRemap_TIM16 1907 * @note ENABLE: Remap (TIM16_CH1 on PA6). 1908 * @retval None 1909 */ 1910 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM16(void) 1911 { 1912 SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM16_REMAP); 1913 } 1914 1915 /** 1916 * @brief Disable the remapping of TIM16_CH1. 1917 * @rmtoll MAPR2 TIM16_REMAP LL_GPIO_AF_DisableRemap_TIM16 1918 * @note DISABLE: No remap (TIM16_CH1 on PB8). 1919 * @retval None 1920 */ 1921 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM16(void) 1922 { 1923 CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM16_REMAP); 1924 } 1925 1926 /** 1927 * @brief Check if TIM16_CH1 has been remapped or not 1928 * @rmtoll MAPR2 TIM16_REMAP LL_GPIO_AF_IsEnabledRemap_TIM16 1929 * @retval State of bit (1 or 0). 1930 */ 1931 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM16(void) 1932 { 1933 return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM16_REMAP) == (AFIO_MAPR2_TIM16_REMAP)); 1934 } 1935 #endif 1936 1937 #if defined(AFIO_MAPR2_TIM17_REMAP) 1938 1939 /** 1940 * @brief Enable the remapping of TIM17_CH1. 1941 * @rmtoll MAPR2 TIM17_REMAP LL_GPIO_AF_EnableRemap_TIM17 1942 * @note ENABLE: Remap (TIM17_CH1 on PA7). 1943 * @retval None 1944 */ 1945 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM17(void) 1946 { 1947 SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM17_REMAP); 1948 } 1949 1950 /** 1951 * @brief Disable the remapping of TIM17_CH1. 1952 * @rmtoll MAPR2 TIM17_REMAP LL_GPIO_AF_DisableRemap_TIM17 1953 * @note DISABLE: No remap (TIM17_CH1 on PB9). 1954 * @retval None 1955 */ 1956 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM17(void) 1957 { 1958 CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM17_REMAP); 1959 } 1960 1961 /** 1962 * @brief Check if TIM17_CH1 has been remapped or not 1963 * @rmtoll MAPR2 TIM17_REMAP LL_GPIO_AF_IsEnabledRemap_TIM17 1964 * @retval State of bit (1 or 0). 1965 */ 1966 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM17(void) 1967 { 1968 return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM17_REMAP) == (AFIO_MAPR2_TIM17_REMAP)); 1969 } 1970 #endif 1971 1972 #if defined(AFIO_MAPR2_CEC_REMAP) 1973 1974 /** 1975 * @brief Enable the remapping of CEC. 1976 * @rmtoll MAPR2 CEC_REMAP LL_GPIO_AF_EnableRemap_CEC 1977 * @note ENABLE: Remap (CEC on PB10). 1978 * @retval None 1979 */ 1980 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_CEC(void) 1981 { 1982 SET_BIT(AFIO->MAPR2, AFIO_MAPR2_CEC_REMAP); 1983 } 1984 1985 /** 1986 * @brief Disable the remapping of CEC. 1987 * @rmtoll MAPR2 CEC_REMAP LL_GPIO_AF_DisableRemap_CEC 1988 * @note DISABLE: No remap (CEC on PB8). 1989 * @retval None 1990 */ 1991 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_CEC(void) 1992 { 1993 CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_CEC_REMAP); 1994 } 1995 1996 /** 1997 * @brief Check if CEC has been remapped or not 1998 * @rmtoll MAPR2 CEC_REMAP LL_GPIO_AF_IsEnabledRemap_CEC 1999 * @retval State of bit (1 or 0). 2000 */ 2001 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_CEC(void) 2002 { 2003 return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_CEC_REMAP) == (AFIO_MAPR2_CEC_REMAP)); 2004 } 2005 #endif 2006 2007 #if defined(AFIO_MAPR2_TIM1_DMA_REMAP) 2008 2009 /** 2010 * @brief Controls the mapping of the TIM1_CH1 TIM1_CH2 DMA requests onto the DMA1 channels. 2011 * @rmtoll MAPR2 TIM1_DMA_REMAP LL_GPIO_AF_EnableRemap_TIM1DMA 2012 * @note ENABLE: Remap (TIM1_CH1 DMA request/DMA1 Channel6, TIM1_CH2 DMA request/DMA1 Channel6) 2013 * @retval None 2014 */ 2015 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM1DMA(void) 2016 { 2017 SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM1_DMA_REMAP); 2018 } 2019 2020 /** 2021 * @brief Controls the mapping of the TIM1_CH1 TIM1_CH2 DMA requests onto the DMA1 channels. 2022 * @rmtoll MAPR2 TIM1_DMA_REMAP LL_GPIO_AF_DisableRemap_TIM1DMA 2023 * @note DISABLE: No remap (TIM1_CH1 DMA request/DMA1 Channel2, TIM1_CH2 DMA request/DMA1 Channel3). 2024 * @retval None 2025 */ 2026 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM1DMA(void) 2027 { 2028 CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM1_DMA_REMAP); 2029 } 2030 2031 /** 2032 * @brief Check if TIM1DMA has been remapped or not 2033 * @rmtoll MAPR2 TIM1_DMA_REMAP LL_GPIO_AF_IsEnabledRemap_TIM1DMA 2034 * @retval State of bit (1 or 0). 2035 */ 2036 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM1DMA(void) 2037 { 2038 return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM1_DMA_REMAP) == (AFIO_MAPR2_TIM1_DMA_REMAP)); 2039 } 2040 #endif 2041 2042 #if defined(AFIO_MAPR2_TIM67_DAC_DMA_REMAP) 2043 2044 /** 2045 * @brief Controls the mapping of the TIM6_DAC1 and TIM7_DAC2 DMA requests onto the DMA1 channels. 2046 * @rmtoll MAPR2 TIM76_DAC_DMA_REMAP LL_GPIO_AF_EnableRemap_TIM67DACDMA 2047 * @note ENABLE: Remap (TIM6_DAC1 DMA request/DMA1 Channel3, TIM7_DAC2 DMA request/DMA1 Channel4) 2048 * @retval None 2049 */ 2050 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM67DACDMA(void) 2051 { 2052 SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM67_DAC_DMA_REMAP); 2053 } 2054 2055 /** 2056 * @brief Controls the mapping of the TIM6_DAC1 and TIM7_DAC2 DMA requests onto the DMA1 channels. 2057 * @rmtoll MAPR2 TIM76_DAC_DMA_REMAP LL_GPIO_AF_DisableRemap_TIM67DACDMA 2058 * @note DISABLE: No remap (TIM6_DAC1 DMA request/DMA2 Channel3, TIM7_DAC2 DMA request/DMA2 Channel4) 2059 * @retval None 2060 */ 2061 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM67DACDMA(void) 2062 { 2063 CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM67_DAC_DMA_REMAP); 2064 } 2065 2066 /** 2067 * @brief Check if TIM67DACDMA has been remapped or not 2068 * @rmtoll MAPR2 TIM76_DAC_DMA_REMAP LL_GPIO_AF_IsEnabledRemap_TIM67DACDMA 2069 * @retval State of bit (1 or 0). 2070 */ 2071 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM67DACDMA(void) 2072 { 2073 return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM67_DAC_DMA_REMAP) == (AFIO_MAPR2_TIM67_DAC_DMA_REMAP)); 2074 } 2075 #endif 2076 2077 #if defined(AFIO_MAPR2_TIM12_REMAP) 2078 2079 /** 2080 * @brief Enable the remapping of TIM12_CH1 and TIM12_CH2. 2081 * @rmtoll MAPR2 TIM12_REMAP LL_GPIO_AF_EnableRemap_TIM12 2082 * @note ENABLE: Remap (TIM12_CH1 on PB12 and TIM12_CH2 on PB13). 2083 * @note This bit is available only in high density value line devices. 2084 * @retval None 2085 */ 2086 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM12(void) 2087 { 2088 SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM12_REMAP); 2089 } 2090 2091 /** 2092 * @brief Disable the remapping of TIM12_CH1 and TIM12_CH2. 2093 * @rmtoll MAPR2 TIM12_REMAP LL_GPIO_AF_DisableRemap_TIM12 2094 * @note DISABLE: No remap (TIM12_CH1 on PC4 and TIM12_CH2 on PC5). 2095 * @note This bit is available only in high density value line devices. 2096 * @retval None 2097 */ 2098 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM12(void) 2099 { 2100 CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM12_REMAP); 2101 } 2102 2103 /** 2104 * @brief Check if TIM12_CH1 has been remapped or not 2105 * @rmtoll MAPR2 TIM12_REMAP LL_GPIO_AF_IsEnabledRemap_TIM12 2106 * @retval State of bit (1 or 0). 2107 */ 2108 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM12(void) 2109 { 2110 return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM12_REMAP) == (AFIO_MAPR2_TIM12_REMAP)); 2111 } 2112 #endif 2113 2114 #if defined(AFIO_MAPR2_MISC_REMAP) 2115 2116 /** 2117 * @brief Miscellaneous features remapping. 2118 * This bit is set and cleared by software. It controls miscellaneous features. 2119 * The DMA2 channel 5 interrupt position in the vector table. 2120 * The timer selection for DAC trigger 3 (TSEL[2:0] = 011, for more details refer to the DAC_CR register). 2121 * @rmtoll MAPR2 MISC_REMAP LL_GPIO_AF_EnableRemap_MISC 2122 * @note ENABLE: DMA2 channel 5 interrupt is mapped separately at position 60 and TIM15 TRGO event is 2123 * selected as DAC Trigger 3, TIM15 triggers TIM1/3. 2124 * @note This bit is available only in high density value line devices. 2125 * @retval None 2126 */ 2127 __STATIC_INLINE void LL_GPIO_AF_EnableRemap_MISC(void) 2128 { 2129 SET_BIT(AFIO->MAPR2, AFIO_MAPR2_MISC_REMAP); 2130 } 2131 2132 /** 2133 * @brief Miscellaneous features remapping. 2134 * This bit is set and cleared by software. It controls miscellaneous features. 2135 * The DMA2 channel 5 interrupt position in the vector table. 2136 * The timer selection for DAC trigger 3 (TSEL[2:0] = 011, for more details refer to the DAC_CR register). 2137 * @rmtoll MAPR2 MISC_REMAP LL_GPIO_AF_DisableRemap_MISC 2138 * @note DISABLE: DMA2 channel 5 interrupt is mapped with DMA2 channel 4 at position 59, TIM5 TRGO 2139 * event is selected as DAC Trigger 3, TIM5 triggers TIM1/3. 2140 * @note This bit is available only in high density value line devices. 2141 * @retval None 2142 */ 2143 __STATIC_INLINE void LL_GPIO_AF_DisableRemap_MISC(void) 2144 { 2145 CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_MISC_REMAP); 2146 } 2147 2148 /** 2149 * @brief Check if MISC has been remapped or not 2150 * @rmtoll MAPR2 MISC_REMAP LL_GPIO_AF_IsEnabledRemap_MISC 2151 * @retval State of bit (1 or 0). 2152 */ 2153 __STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_MISC(void) 2154 { 2155 return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_MISC_REMAP) == (AFIO_MAPR2_MISC_REMAP)); 2156 } 2157 #endif 2158 2159 /** 2160 * @} 2161 */ 2162 2163 /** @defgroup GPIO_AF_LL_EVENTOUT Output Event configuration 2164 * @brief This section propose definition to Configure EVENTOUT Cortex feature . 2165 * @{ 2166 */ 2167 2168 /** 2169 * @brief Configures the port and pin on which the EVENTOUT Cortex signal will be connected. 2170 * @rmtoll EVCR PORT LL_GPIO_AF_ConfigEventout\n 2171 * EVCR PIN LL_GPIO_AF_ConfigEventout 2172 * @param LL_GPIO_PortSource This parameter can be one of the following values: 2173 * @arg @ref LL_GPIO_AF_EVENTOUT_PORT_A 2174 * @arg @ref LL_GPIO_AF_EVENTOUT_PORT_B 2175 * @arg @ref LL_GPIO_AF_EVENTOUT_PORT_C 2176 * @arg @ref LL_GPIO_AF_EVENTOUT_PORT_D 2177 * @arg @ref LL_GPIO_AF_EVENTOUT_PORT_E 2178 * @param LL_GPIO_PinSource This parameter can be one of the following values: 2179 * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_0 2180 * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_1 2181 * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_2 2182 * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_3 2183 * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_4 2184 * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_5 2185 * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_6 2186 * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_7 2187 * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_8 2188 * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_9 2189 * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_10 2190 * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_11 2191 * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_12 2192 * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_13 2193 * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_14 2194 * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_15 2195 * @retval None 2196 */ 2197 __STATIC_INLINE void LL_GPIO_AF_ConfigEventout(uint32_t LL_GPIO_PortSource, uint32_t LL_GPIO_PinSource) 2198 { 2199 MODIFY_REG(AFIO->EVCR, (AFIO_EVCR_PORT) | (AFIO_EVCR_PIN), (LL_GPIO_PortSource) | (LL_GPIO_PinSource)); 2200 } 2201 2202 /** 2203 * @brief Enables the Event Output. 2204 * @rmtoll EVCR EVOE LL_GPIO_AF_EnableEventout 2205 * @retval None 2206 */ 2207 __STATIC_INLINE void LL_GPIO_AF_EnableEventout(void) 2208 { 2209 SET_BIT(AFIO->EVCR, AFIO_EVCR_EVOE); 2210 } 2211 2212 /** 2213 * @brief Disables the Event Output. 2214 * @rmtoll EVCR EVOE LL_GPIO_AF_DisableEventout 2215 * @retval None 2216 */ 2217 __STATIC_INLINE void LL_GPIO_AF_DisableEventout(void) 2218 { 2219 CLEAR_BIT(AFIO->EVCR, AFIO_EVCR_EVOE); 2220 } 2221 2222 /** 2223 * @} 2224 */ 2225 /** @defgroup GPIO_AF_LL_EXTI EXTI external interrupt 2226 * @brief This section Configure source input for the EXTI external interrupt . 2227 * @{ 2228 */ 2229 2230 /** 2231 * @brief Configure source input for the EXTI external interrupt. 2232 * @rmtoll AFIO_EXTICR1 EXTIx LL_GPIO_AF_SetEXTISource\n 2233 * AFIO_EXTICR2 EXTIx LL_GPIO_AF_SetEXTISource\n 2234 * AFIO_EXTICR3 EXTIx LL_GPIO_AF_SetEXTISource\n 2235 * AFIO_EXTICR4 EXTIx LL_GPIO_AF_SetEXTISource 2236 * @param Port This parameter can be one of the following values: 2237 * @arg @ref LL_GPIO_AF_EXTI_PORTA 2238 * @arg @ref LL_GPIO_AF_EXTI_PORTB 2239 * @arg @ref LL_GPIO_AF_EXTI_PORTC 2240 * @arg @ref LL_GPIO_AF_EXTI_PORTD 2241 * @arg @ref LL_GPIO_AF_EXTI_PORTE 2242 * @arg @ref LL_GPIO_AF_EXTI_PORTF 2243 * @arg @ref LL_GPIO_AF_EXTI_PORTG 2244 * @param Line This parameter can be one of the following values: 2245 * @arg @ref LL_GPIO_AF_EXTI_LINE0 2246 * @arg @ref LL_GPIO_AF_EXTI_LINE1 2247 * @arg @ref LL_GPIO_AF_EXTI_LINE2 2248 * @arg @ref LL_GPIO_AF_EXTI_LINE3 2249 * @arg @ref LL_GPIO_AF_EXTI_LINE4 2250 * @arg @ref LL_GPIO_AF_EXTI_LINE5 2251 * @arg @ref LL_GPIO_AF_EXTI_LINE6 2252 * @arg @ref LL_GPIO_AF_EXTI_LINE7 2253 * @arg @ref LL_GPIO_AF_EXTI_LINE8 2254 * @arg @ref LL_GPIO_AF_EXTI_LINE9 2255 * @arg @ref LL_GPIO_AF_EXTI_LINE10 2256 * @arg @ref LL_GPIO_AF_EXTI_LINE11 2257 * @arg @ref LL_GPIO_AF_EXTI_LINE12 2258 * @arg @ref LL_GPIO_AF_EXTI_LINE13 2259 * @arg @ref LL_GPIO_AF_EXTI_LINE14 2260 * @arg @ref LL_GPIO_AF_EXTI_LINE15 2261 * @retval None 2262 */ 2263 __STATIC_INLINE void LL_GPIO_AF_SetEXTISource(uint32_t Port, uint32_t Line) 2264 { 2265 MODIFY_REG(AFIO->EXTICR[Line & 0xFF], (Line >> 16), Port << POSITION_VAL((Line >> 16))); 2266 } 2267 2268 /** 2269 * @brief Get the configured defined for specific EXTI Line 2270 * @rmtoll AFIO_EXTICR1 EXTIx LL_GPIO_AF_GetEXTISource\n 2271 * AFIO_EXTICR2 EXTIx LL_GPIO_AF_GetEXTISource\n 2272 * AFIO_EXTICR3 EXTIx LL_GPIO_AF_GetEXTISource\n 2273 * AFIO_EXTICR4 EXTIx LL_GPIO_AF_GetEXTISource 2274 * @param Line This parameter can be one of the following values: 2275 * @arg @ref LL_GPIO_AF_EXTI_LINE0 2276 * @arg @ref LL_GPIO_AF_EXTI_LINE1 2277 * @arg @ref LL_GPIO_AF_EXTI_LINE2 2278 * @arg @ref LL_GPIO_AF_EXTI_LINE3 2279 * @arg @ref LL_GPIO_AF_EXTI_LINE4 2280 * @arg @ref LL_GPIO_AF_EXTI_LINE5 2281 * @arg @ref LL_GPIO_AF_EXTI_LINE6 2282 * @arg @ref LL_GPIO_AF_EXTI_LINE7 2283 * @arg @ref LL_GPIO_AF_EXTI_LINE8 2284 * @arg @ref LL_GPIO_AF_EXTI_LINE9 2285 * @arg @ref LL_GPIO_AF_EXTI_LINE10 2286 * @arg @ref LL_GPIO_AF_EXTI_LINE11 2287 * @arg @ref LL_GPIO_AF_EXTI_LINE12 2288 * @arg @ref LL_GPIO_AF_EXTI_LINE13 2289 * @arg @ref LL_GPIO_AF_EXTI_LINE14 2290 * @arg @ref LL_GPIO_AF_EXTI_LINE15 2291 * @retval Returned value can be one of the following values: 2292 * @arg @ref LL_GPIO_AF_EXTI_PORTA 2293 * @arg @ref LL_GPIO_AF_EXTI_PORTB 2294 * @arg @ref LL_GPIO_AF_EXTI_PORTC 2295 * @arg @ref LL_GPIO_AF_EXTI_PORTD 2296 * @arg @ref LL_GPIO_AF_EXTI_PORTE 2297 * @arg @ref LL_GPIO_AF_EXTI_PORTF 2298 * @arg @ref LL_GPIO_AF_EXTI_PORTG 2299 */ 2300 __STATIC_INLINE uint32_t LL_GPIO_AF_GetEXTISource(uint32_t Line) 2301 { 2302 return (uint32_t)(READ_BIT(AFIO->EXTICR[Line & 0xFF], (Line >> 16)) >> POSITION_VAL(Line >> 16)); 2303 } 2304 2305 /** 2306 * @} 2307 */ 2308 2309 #if defined(USE_FULL_LL_DRIVER) 2310 /** @defgroup GPIO_LL_EF_Init Initialization and de-initialization functions 2311 * @{ 2312 */ 2313 2314 ErrorStatus LL_GPIO_DeInit(GPIO_TypeDef *GPIOx); 2315 ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStruct); 2316 void LL_GPIO_StructInit(LL_GPIO_InitTypeDef *GPIO_InitStruct); 2317 2318 /** 2319 * @} 2320 */ 2321 #endif /* USE_FULL_LL_DRIVER */ 2322 2323 /** 2324 * @} 2325 */ 2326 2327 /** 2328 * @} 2329 */ 2330 2331 #endif /* defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) */ 2332 /** 2333 * @} 2334 */ 2335 2336 #ifdef __cplusplus 2337 } 2338 #endif 2339 2340 #endif /* STM32F1xx_LL_GPIO_H */ 2341
