Subversion Repositories AFRtranscoder

Rev

Details | Last modification | View Log | RSS feed

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