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