1 /**
2 *******************************************************************************************************
3 * @file fm33lc0xx_fl_gpio.h
4 * @author FMSH Application Team
5 * @brief Head file of GPIO FL Module
6 *******************************************************************************************************
7 * @attention
8 *
9 * Copyright (c) [2021] [Fudan Microelectronics]
10 * THIS SOFTWARE is licensed under Mulan PSL v2.
11 * You can use this software according to the terms and conditions of the Mulan PSL v2.
12 * You may obtain a copy of Mulan PSL v2 at:
13 * http://license.coscl.org.cn/MulanPSL2
14 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
15 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
16 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
17 * See the Mulan PSL v2 for more details.
18 *
19 *******************************************************************************************************
20 */
21
22
23 /* Define to prevent recursive inclusion---------------------------------------------------------------*/
24 #ifndef __FM33LC0XX_FL_GPIO_H
25 #define __FM33LC0XX_FL_GPIO_H
26
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 /* Includes -------------------------------------------------------------------------------------------*/
31 #include "fm33lc0xx_fl_def.h"
32 /** @addtogroup FM33LC0XX_FL_Driver
33 * @{
34 */
35
36 /** @defgroup GPIO GPIO
37 * @brief GPIO FL driver
38 * @{
39 */
40
41 /* Exported types -------------------------------------------------------------------------------------*/
42 /** @defgroup GPIO_FL_ES_INIT GPIO Exported Init structures
43 * @{
44 */
45 /**
46 * @brief FL GPIO Init Sturcture definition
47 */
48 typedef struct
49 {
50 /*! PIN */
51 uint32_t pin;
52
53 /*! 功能模式 */
54 uint32_t mode;
55
56 /*! 输出类型 */
57 uint32_t outputType;
58
59 /*! 上拉使能 */
60 uint32_t pull;
61
62 /*! 数字功能重定向 */
63 uint32_t remapPin;
64
65 } FL_GPIO_InitTypeDef;
66
67 /**
68 * @brief FL GPIO WKUP Init Sturcture definition
69 */
70 typedef struct
71 {
72 /*! 触发边沿 */
73 uint32_t polarity;
74
75 } FL_WKUP_InitTypeDef;
76
77 /**
78 * @}
79 */
80 /* Exported constants ---------------------------------------------------------------------------------*/
81 /** @defgroup GPIO_FL_Exported_Constants GPIO Exported Constants
82 * @{
83 */
84
85 #define GPIO_FCR_Pos (0U)
86 #define GPIO_FCR_Msk (0x3U << GPIO_FCR_Pos)
87 #define GPIO_FCR GPIO_FCR_Msk
88
89 #define GPIO_EXTIEDS_Pos (0U)
90 #define GPIO_EXTIEDS_Msk (0x3U << GPIO_EXTIEDS_Pos)
91 #define GPIO_EXTIEDS GPIO_EXTIEDS_Msk
92
93 #define GPIO_FOUTSEL_FOUT0_Pos (0U)
94 #define GPIO_FOUTSEL_FOUT0_Msk (0xfU << GPIO_FOUTSEL_FOUT0_Pos)
95 #define GPIO_FOUTSEL_FOUT0 GPIO_FOUTSEL_FOUT0_Msk
96
97 #define GPIO_FOUTSEL_FOUT1_Pos (4U)
98 #define GPIO_FOUTSEL_FOUT1_Msk (0xfU << GPIO_FOUTSEL_FOUT1_Pos)
99 #define GPIO_FOUTSEL_FOUT1 GPIO_FOUTSEL_FOUT1_Msk
100
101 #define GPIO_EXTISEL_EXTI0_Pos (0U)
102 #define GPIO_EXTISEL_EXTI0_Msk (0x3U << GPIO_EXTISEL_EXTI0_Pos)
103 #define GPIO_EXTISEL_EXTI0 GPIO_EXTISEL_EXTI0_Msk
104
105 #define GPIO_EXTISEL_EXTI1_Pos (2U)
106 #define GPIO_EXTISEL_EXTI1_Msk (0x3U << GPIO_EXTISEL_EXTI1_Pos)
107 #define GPIO_EXTISEL_EXTI1 GPIO_EXTISEL_EXTI1_Msk
108
109 #define GPIO_EXTISEL_EXTI2_Pos (4U)
110 #define GPIO_EXTISEL_EXTI2_Msk (0x3U << GPIO_EXTISEL_EXTI2_Pos)
111 #define GPIO_EXTISEL_EXTI2 GPIO_EXTISEL_EXTI2_Msk
112
113 #define GPIO_EXTISEL_EXTI3_Pos (6U)
114 #define GPIO_EXTISEL_EXTI3_Msk (0x3U << GPIO_EXTISEL_EXTI3_Pos)
115 #define GPIO_EXTISEL_EXTI3 GPIO_EXTISEL_EXTI3_Msk
116
117 #define GPIO_EXTISEL_EXTI4_Pos (8U)
118 #define GPIO_EXTISEL_EXTI4_Msk (0x3U << GPIO_EXTISEL_EXTI4_Pos)
119 #define GPIO_EXTISEL_EXTI4 GPIO_EXTISEL_EXTI4_Msk
120
121 #define GPIO_EXTISEL_EXTI5_Pos (10U)
122 #define GPIO_EXTISEL_EXTI5_Msk (0x3U << GPIO_EXTISEL_EXTI5_Pos)
123 #define GPIO_EXTISEL_EXTI5 GPIO_EXTISEL_EXTI5_Msk
124
125 #define GPIO_EXTISEL_EXTI6_Pos (12U)
126 #define GPIO_EXTISEL_EXTI6_Msk (0x3U << GPIO_EXTISEL_EXTI6_Pos)
127 #define GPIO_EXTISEL_EXTI6 GPIO_EXTISEL_EXTI6_Msk
128
129 #define GPIO_EXTISEL_EXTI7_Pos (14U)
130 #define GPIO_EXTISEL_EXTI7_Msk (0x3U << GPIO_EXTISEL_EXTI7_Pos)
131 #define GPIO_EXTISEL_EXTI7 GPIO_EXTISEL_EXTI7_Msk
132
133 #define GPIO_EXTISEL_EXTI8_Pos (16U)
134 #define GPIO_EXTISEL_EXTI8_Msk (0x3U << GPIO_EXTISEL_EXTI8_Pos)
135 #define GPIO_EXTISEL_EXTI8 GPIO_EXTISEL_EXTI8_Msk
136
137 #define GPIO_EXTISEL_EXTI9_Pos (18U)
138 #define GPIO_EXTISEL_EXTI9_Msk (0x3U << GPIO_EXTISEL_EXTI9_Pos)
139 #define GPIO_EXTISEL_EXTI9 GPIO_EXTISEL_EXTI9_Msk
140
141 #define GPIO_EXTISEL_EXTI10_Pos (20U)
142 #define GPIO_EXTISEL_EXTI10_Msk (0x3U << GPIO_EXTISEL_EXTI10_Pos)
143 #define GPIO_EXTISEL_EXTI10 GPIO_EXTISEL_EXTI10_Msk
144
145 #define GPIO_EXTISEL_EXTI11_Pos (22U)
146 #define GPIO_EXTISEL_EXTI11_Msk (0x3U << GPIO_EXTISEL_EXTI11_Pos)
147 #define GPIO_EXTISEL_EXTI11 GPIO_EXTISEL_EXTI11_Msk
148
149 #define GPIO_EXTISEL_EXTI12_Pos (24U)
150 #define GPIO_EXTISEL_EXTI12_Msk (0x3U << GPIO_EXTISEL_EXTI12_Pos)
151 #define GPIO_EXTISEL_EXTI12 GPIO_EXTISEL_EXTI12_Msk
152
153 #define GPIO_EXTISEL_EXTI13_Pos (26U)
154 #define GPIO_EXTISEL_EXTI13_Msk (0x3U << GPIO_EXTISEL_EXTI13_Pos)
155 #define GPIO_EXTISEL_EXTI13 GPIO_EXTISEL_EXTI13_Msk
156
157 #define GPIO_EXTISEL_EXTI14_Pos (28U)
158 #define GPIO_EXTISEL_EXTI14_Msk (0x3U << GPIO_EXTISEL_EXTI14_Pos)
159 #define GPIO_EXTISEL_EXTI14 GPIO_EXTISEL_EXTI14_Msk
160
161 #define GPIO_PINWKEN_EN_Pos (0U)
162 #define GPIO_PINWKEN_EN_Msk (0xffU << GPIO_PINWKEN_EN_Pos)
163 #define GPIO_PINWKEN_EN GPIO_PINWKEN_EN_Msk
164
165 #define GPIO_PINWKEN_WKISEL_Pos (31U)
166 #define GPIO_PINWKEN_WKISEL_Msk (0x1U << GPIO_PINWKEN_WKISEL_Pos)
167 #define GPIO_PINWKEN_WKISEL GPIO_PINWKEN_WKISEL_Msk
168
169 #define GPIO_PINWKEN_SEL_Pos (8U)
170 #define GPIO_PINWKEN_SEL_Msk (0x1U << GPIO_PINWKEN_SEL_Pos)
171 #define GPIO_PINWKEN_SEL GPIO_PINWKEN_SEL_Msk
172
173
174
175 #define FL_GPIO_PIN_0 (0x1U << 0U)
176 #define FL_GPIO_PIN_1 (0x1U << 1U)
177 #define FL_GPIO_PIN_2 (0x1U << 2U)
178 #define FL_GPIO_PIN_3 (0x1U << 3U)
179 #define FL_GPIO_PIN_4 (0x1U << 4U)
180 #define FL_GPIO_PIN_5 (0x1U << 5U)
181 #define FL_GPIO_PIN_6 (0x1U << 6U)
182 #define FL_GPIO_PIN_7 (0x1U << 7U)
183 #define FL_GPIO_PIN_8 (0x1U << 8U)
184 #define FL_GPIO_PIN_9 (0x1U << 9U)
185 #define FL_GPIO_PIN_10 (0x1U << 10U)
186 #define FL_GPIO_PIN_11 (0x1U << 11U)
187 #define FL_GPIO_PIN_12 (0x1U << 12U)
188 #define FL_GPIO_PIN_13 (0x1U << 13U)
189 #define FL_GPIO_PIN_14 (0x1U << 14U)
190 #define FL_GPIO_PIN_15 (0x1U << 15U)
191 #define FL_GPIO_PIN_ALL (0xffffU << 0U)
192 #define FL_GPIO_PIN_ALL_EXCEPTSWD 0xFE7FU
193 #define FL_GPIO_EXTI_LINE_0 (0x1U << 0U)
194 #define FL_GPIO_EXTI_LINE_1 (0x1U << 1U)
195 #define FL_GPIO_EXTI_LINE_2 (0x1U << 2U)
196 #define FL_GPIO_EXTI_LINE_3 (0x1U << 3U)
197 #define FL_GPIO_EXTI_LINE_4 (0x1U << 4U)
198 #define FL_GPIO_EXTI_LINE_5 (0x1U << 5U)
199 #define FL_GPIO_EXTI_LINE_6 (0x1U << 6U)
200 #define FL_GPIO_EXTI_LINE_7 (0x1U << 7U)
201 #define FL_GPIO_EXTI_LINE_8 (0x1U << 8U)
202 #define FL_GPIO_EXTI_LINE_9 (0x1U << 9U)
203 #define FL_GPIO_EXTI_LINE_10 (0x1U << 10U)
204 #define FL_GPIO_EXTI_LINE_11 (0x1U << 11U)
205 #define FL_GPIO_EXTI_LINE_12 (0x1U << 12U)
206 #define FL_GPIO_EXTI_LINE_13 (0x1U << 13U)
207 #define FL_GPIO_EXTI_LINE_14 (0x1U << 14U)
208 #define FL_GPIO_EXTI_LINE_15 (0x1U << 15U)
209 #define FL_GPIO_EXTI_LINE_ALL (0xffffU << 0U)
210 #define FL_GPIO_EXTI_LINE_0_PA0 (0x0U << 0U)
211 #define FL_GPIO_EXTI_LINE_0_PA1 (0x1U << 0U)
212 #define FL_GPIO_EXTI_LINE_0_PA2 (0x2U << 0U)
213 #define FL_GPIO_EXTI_LINE_0_PA3 (0x3U << 0U)
214 #define FL_GPIO_EXTI_LINE_1_PA4 (0x0U << 2U)
215 #define FL_GPIO_EXTI_LINE_1_PA5 (0x1U << 2U)
216 #define FL_GPIO_EXTI_LINE_1_PA6 (0x2U << 2U)
217 #define FL_GPIO_EXTI_LINE_1_PA7 (0x3U << 2U)
218 #define FL_GPIO_EXTI_LINE_2_PA8 (0x0U << 4U)
219 #define FL_GPIO_EXTI_LINE_2_PA9 (0x1U << 4U)
220 #define FL_GPIO_EXTI_LINE_2_PA10 (0x2U << 4U)
221 #define FL_GPIO_EXTI_LINE_2_PA11 (0x3U << 4U)
222 #define FL_GPIO_EXTI_LINE_3_PA12 (0x0U << 6U)
223 #define FL_GPIO_EXTI_LINE_3_PA13 (0x1U << 6U)
224 #define FL_GPIO_EXTI_LINE_3_PA14 (0x2U << 6U)
225 #define FL_GPIO_EXTI_LINE_3_PA15 (0x3U << 6U)
226 #define FL_GPIO_EXTI_LINE_4_PB0 (0x0U << 8U)
227 #define FL_GPIO_EXTI_LINE_4_PB1 (0x1U << 8U)
228 #define FL_GPIO_EXTI_LINE_4_PB2 (0x2U << 8U)
229 #define FL_GPIO_EXTI_LINE_4_PB3 (0x3U << 8U)
230 #define FL_GPIO_EXTI_LINE_5_PB4 (0x0U << 10U)
231 #define FL_GPIO_EXTI_LINE_5_PB5 (0x1U << 10U)
232 #define FL_GPIO_EXTI_LINE_5_PB6 (0x2U << 10U)
233 #define FL_GPIO_EXTI_LINE_5_PB7 (0x3U << 10U)
234 #define FL_GPIO_EXTI_LINE_6_PB8 (0x0U << 12U)
235 #define FL_GPIO_EXTI_LINE_6_PB9 (0x1U << 12U)
236 #define FL_GPIO_EXTI_LINE_6_PB10 (0x2U << 12U)
237 #define FL_GPIO_EXTI_LINE_6_PB11 (0x3U << 12U)
238 #define FL_GPIO_EXTI_LINE_7_PB12 (0x0U << 14U)
239 #define FL_GPIO_EXTI_LINE_7_PB13 (0x1U << 14U)
240 #define FL_GPIO_EXTI_LINE_7_PB14 (0x2U << 14U)
241 #define FL_GPIO_EXTI_LINE_7_PB15 (0x3U << 14U)
242 #define FL_GPIO_EXTI_LINE_8_PC0 (0x0U << 16U)
243 #define FL_GPIO_EXTI_LINE_8_PC1 (0x1U << 16U)
244 #define FL_GPIO_EXTI_LINE_8_PC2 (0x2U << 16U)
245 #define FL_GPIO_EXTI_LINE_8_PC3 (0x3U << 16U)
246 #define FL_GPIO_EXTI_LINE_9_PC4 (0x0U << 18U)
247 #define FL_GPIO_EXTI_LINE_9_PC5 (0x1U << 18U)
248 #define FL_GPIO_EXTI_LINE_9_PC6 (0x2U << 18U)
249 #define FL_GPIO_EXTI_LINE_9_PC7 (0x3U << 18U)
250 #define FL_GPIO_EXTI_LINE_10_PC8 (0x0U << 20U)
251 #define FL_GPIO_EXTI_LINE_10_PC9 (0x1U << 20U)
252 #define FL_GPIO_EXTI_LINE_10_PC10 (0x2U << 20U)
253 #define FL_GPIO_EXTI_LINE_10_PC11 (0x3U << 20U)
254 #define FL_GPIO_EXTI_LINE_12_PD0 (0x0U << 24U)
255 #define FL_GPIO_EXTI_LINE_12_PD1 (0x1U << 24U)
256 #define FL_GPIO_EXTI_LINE_12_PD2 (0x2U << 24U)
257 #define FL_GPIO_EXTI_LINE_12_PD3 (0x3U << 24U)
258 #define FL_GPIO_EXTI_LINE_13_PD4 (0x0U << 26U)
259 #define FL_GPIO_EXTI_LINE_13_PD5 (0x1U << 26U)
260 #define FL_GPIO_EXTI_LINE_13_PD6 (0x2U << 26U)
261 #define FL_GPIO_EXTI_LINE_13_PD7 (0x3U << 26U)
262 #define FL_GPIO_EXTI_LINE_14_PD8 (0x0U << 28U)
263 #define FL_GPIO_EXTI_LINE_14_PD9 (0x1U << 28U)
264 #define FL_GPIO_EXTI_LINE_14_PD10 (0x2U << 28U)
265 #define FL_GPIO_EXTI_LINE_14_PD11 (0x3U << 28U)
266 #define FL_GPIO_WAKEUP_0 (0x1U << 0U)
267 #define FL_GPIO_WAKEUP_1 (0x1U << 1U)
268 #define FL_GPIO_WAKEUP_2 (0x1U << 2U)
269 #define FL_GPIO_WAKEUP_3 (0x1U << 3U)
270 #define FL_GPIO_WAKEUP_4 (0x1U << 4U)
271 #define FL_GPIO_WAKEUP_5 (0x1U << 5U)
272 #define FL_GPIO_WAKEUP_6 (0x1U << 6U)
273 #define FL_GPIO_WAKEUP_7 (0x1U << 7U)
274 #define FL_GPIO_OUTPUT_PUSHPULL 0x0U
275 #define FL_GPIO_OUTPUT_OPENDRAIN 0x1U
276
277
278
279 #define FL_GPIO_MODE_INPUT (0x0U << GPIO_FCR_Pos)
280 #define FL_GPIO_MODE_OUTPUT (0x1U << GPIO_FCR_Pos)
281 #define FL_GPIO_MODE_DIGITAL (0x2U << GPIO_FCR_Pos)
282 #define FL_GPIO_MODE_ANALOG (0x3U << GPIO_FCR_Pos)
283
284
285 #define FL_GPIO_EXTI_TRIGGER_EDGE_RISING (0x0U << GPIO_EXTIEDS_Pos)
286 #define FL_GPIO_EXTI_TRIGGER_EDGE_FALLING (0x1U << GPIO_EXTIEDS_Pos)
287 #define FL_GPIO_EXTI_TRIGGER_EDGE_BOTH (0x2U << GPIO_EXTIEDS_Pos)
288 #define FL_GPIO_EXTI_TRIGGER_EDGE_DISABLE (0x3U << GPIO_EXTIEDS_Pos)
289
290
291 #define FL_GPIO_FOUT0_SELECT_XTLF (0x0U << GPIO_FOUTSEL_FOUT0_Pos)
292 #define FL_GPIO_FOUT0_SELECT_LPOSC (0x1U << GPIO_FOUTSEL_FOUT0_Pos)
293 #define FL_GPIO_FOUT0_SELECT_RCHF_DIV64 (0x2U << GPIO_FOUTSEL_FOUT0_Pos)
294 #define FL_GPIO_FOUT0_SELECT_LSCLK (0x3U << GPIO_FOUTSEL_FOUT0_Pos)
295 #define FL_GPIO_FOUT0_SELECT_AHBCLK_DIV64 (0x4U << GPIO_FOUTSEL_FOUT0_Pos)
296 #define FL_GPIO_FOUT0_SELECT_RTCTM (0x5U << GPIO_FOUTSEL_FOUT0_Pos)
297 #define FL_GPIO_FOUT0_SELECT_PLLOUTPUT_DIV64 (0x6U << GPIO_FOUTSEL_FOUT0_Pos)
298 #define FL_GPIO_FOUT0_SELECT_RTCCLK64Hz (0x7U << GPIO_FOUTSEL_FOUT0_Pos)
299 #define FL_GPIO_FOUT0_SELECT_APB1CLK_DIV64 (0x8U << GPIO_FOUTSEL_FOUT0_Pos)
300 #define FL_GPIO_FOUT0_SELECT_PLLOUTPUT (0x9U << GPIO_FOUTSEL_FOUT0_Pos)
301 #define FL_GPIO_FOUT0_SELECT_RCMF_PSC (0xaU << GPIO_FOUTSEL_FOUT0_Pos)
302 #define FL_GPIO_FOUT0_SELECT_RCHF (0xbU << GPIO_FOUTSEL_FOUT0_Pos)
303 #define FL_GPIO_FOUT0_SELECT_XTHF_DIV64 (0xcU << GPIO_FOUTSEL_FOUT0_Pos)
304 #define FL_GPIO_FOUT0_SELECT_COMP1_OUTPUT (0xdU << GPIO_FOUTSEL_FOUT0_Pos)
305 #define FL_GPIO_FOUT0_SELECT_CLK_8K (0xeU << GPIO_FOUTSEL_FOUT0_Pos)
306 #define FL_GPIO_FOUT0_SELECT_ADC_CLK (0xfU << GPIO_FOUTSEL_FOUT0_Pos)
307
308
309 #define FL_GPIO_FOUT1_SELECT_XTLF (0x0U << GPIO_FOUTSEL_FOUT1_Pos)
310 #define FL_GPIO_FOUT1_SELECT_LPOSC (0x1U << GPIO_FOUTSEL_FOUT1_Pos)
311 #define FL_GPIO_FOUT1_SELECT_RCHF_DIV64 (0x2U << GPIO_FOUTSEL_FOUT1_Pos)
312 #define FL_GPIO_FOUT1_SELECT_LSCLK (0x3U << GPIO_FOUTSEL_FOUT1_Pos)
313 #define FL_GPIO_FOUT1_SELECT_AHBCLK_DIV64 (0x4U << GPIO_FOUTSEL_FOUT1_Pos)
314 #define FL_GPIO_FOUT1_SELECT_RTCTM (0x5U << GPIO_FOUTSEL_FOUT1_Pos)
315 #define FL_GPIO_FOUT1_SELECT_PLLOUTPUT_DIV64 (0x6U << GPIO_FOUTSEL_FOUT1_Pos)
316 #define FL_GPIO_FOUT1_SELECT_RTCCLK64Hz (0x7U << GPIO_FOUTSEL_FOUT1_Pos)
317 #define FL_GPIO_FOUT1_SELECT_APB1CLK_DIV64 (0x8U << GPIO_FOUTSEL_FOUT1_Pos)
318 #define FL_GPIO_FOUT1_SELECT_PLLOUTPUT (0x9U << GPIO_FOUTSEL_FOUT1_Pos)
319 #define FL_GPIO_FOUT1_SELECT_RCMF_PSC (0xaU << GPIO_FOUTSEL_FOUT1_Pos)
320 #define FL_GPIO_FOUT1_SELECT_RCHF (0xbU << GPIO_FOUTSEL_FOUT1_Pos)
321 #define FL_GPIO_FOUT1_SELECT_XTHF_DIV64 (0xcU << GPIO_FOUTSEL_FOUT1_Pos)
322 #define FL_GPIO_FOUT1_SELECT_ADCCLK_DIV64 (0xdU << GPIO_FOUTSEL_FOUT1_Pos)
323 #define FL_GPIO_FOUT1_SELECT_CLK_8K (0xeU << GPIO_FOUTSEL_FOUT1_Pos)
324 #define FL_GPIO_FOUT1_SELECT_COMP2_OUTPUT (0xfU << GPIO_FOUTSEL_FOUT1_Pos)
325
326
327 #define FL_GPIO_WAKEUP_INT_ENTRY_NMI (0x0U << GPIO_PINWKEN_WKISEL_Pos)
328 #define FL_GPIO_WAKEUP_INT_ENTRY_38 (0x1U << GPIO_PINWKEN_WKISEL_Pos)
329
330
331 #define FL_GPIO_WAKEUP_TRIGGER_RISING (0x1U << GPIO_PINWKEN_SEL_Pos)
332 #define FL_GPIO_WAKEUP_TRIGGER_FALLING (0x0U << GPIO_PINWKEN_SEL_Pos)
333
334
335 /**
336 * @}
337 */
338 /* Exported functions ---------------------------------------------------------------------------------*/
339 /** @defgroup GPIO_FL_Exported_Functions GPIO Exported Functions
340 * @{
341 */
342
343 /**
344 * @brief GPIOx input enable
345 * @rmtoll INEN FL_GPIO_EnablePinInput
346 * @param GPIOx GPIO Port
347 * @param pin This parameter can be one of the following values:
348 * @arg @ref FL_GPIO_PIN_0
349 * @arg @ref FL_GPIO_PIN_1
350 * @arg @ref FL_GPIO_PIN_2
351 * @arg @ref FL_GPIO_PIN_3
352 * @arg @ref FL_GPIO_PIN_4
353 * @arg @ref FL_GPIO_PIN_5
354 * @arg @ref FL_GPIO_PIN_6
355 * @arg @ref FL_GPIO_PIN_7
356 * @arg @ref FL_GPIO_PIN_8
357 * @arg @ref FL_GPIO_PIN_9
358 * @arg @ref FL_GPIO_PIN_10
359 * @arg @ref FL_GPIO_PIN_11
360 * @arg @ref FL_GPIO_PIN_12
361 * @arg @ref FL_GPIO_PIN_13
362 * @arg @ref FL_GPIO_PIN_14
363 * @arg @ref FL_GPIO_PIN_15
364 * @arg @ref FL_GPIO_PIN_ALL
365 * @retval None
366 */
FL_GPIO_EnablePinInput(GPIO_Type * GPIOx,uint32_t pin)367 __STATIC_INLINE void FL_GPIO_EnablePinInput(GPIO_Type *GPIOx, uint32_t pin)
368 {
369 SET_BIT(GPIOx->INEN, ((pin & 0xffff) << 0x0U));
370 }
371
372 /**
373 * @brief CPIOx input disable
374 * @rmtoll INEN FL_GPIO_DisablePinInput
375 * @param GPIOx GPIO Port
376 * @param pin This parameter can be one of the following values:
377 * @arg @ref FL_GPIO_PIN_0
378 * @arg @ref FL_GPIO_PIN_1
379 * @arg @ref FL_GPIO_PIN_2
380 * @arg @ref FL_GPIO_PIN_3
381 * @arg @ref FL_GPIO_PIN_4
382 * @arg @ref FL_GPIO_PIN_5
383 * @arg @ref FL_GPIO_PIN_6
384 * @arg @ref FL_GPIO_PIN_7
385 * @arg @ref FL_GPIO_PIN_8
386 * @arg @ref FL_GPIO_PIN_9
387 * @arg @ref FL_GPIO_PIN_10
388 * @arg @ref FL_GPIO_PIN_11
389 * @arg @ref FL_GPIO_PIN_12
390 * @arg @ref FL_GPIO_PIN_13
391 * @arg @ref FL_GPIO_PIN_14
392 * @arg @ref FL_GPIO_PIN_15
393 * @arg @ref FL_GPIO_PIN_ALL
394 * @retval None
395 */
FL_GPIO_DisablePinInput(GPIO_Type * GPIOx,uint32_t pin)396 __STATIC_INLINE void FL_GPIO_DisablePinInput(GPIO_Type *GPIOx, uint32_t pin)
397 {
398 CLEAR_BIT(GPIOx->INEN, ((pin & 0xffff) << 0x0U));
399 }
400
401 /**
402 * @brief Get GPIOx input enable status
403 * @rmtoll INEN FL_GPIO_IsEnabledPinInput
404 * @param GPIOx GPIO Port
405 * @param pin This parameter can be one of the following values:
406 * @arg @ref FL_GPIO_PIN_0
407 * @arg @ref FL_GPIO_PIN_1
408 * @arg @ref FL_GPIO_PIN_2
409 * @arg @ref FL_GPIO_PIN_3
410 * @arg @ref FL_GPIO_PIN_4
411 * @arg @ref FL_GPIO_PIN_5
412 * @arg @ref FL_GPIO_PIN_6
413 * @arg @ref FL_GPIO_PIN_7
414 * @arg @ref FL_GPIO_PIN_8
415 * @arg @ref FL_GPIO_PIN_9
416 * @arg @ref FL_GPIO_PIN_10
417 * @arg @ref FL_GPIO_PIN_11
418 * @arg @ref FL_GPIO_PIN_12
419 * @arg @ref FL_GPIO_PIN_13
420 * @arg @ref FL_GPIO_PIN_14
421 * @arg @ref FL_GPIO_PIN_15
422 * @retval State of bit (1 or 0).
423 */
FL_GPIO_IsEnabledPinInput(GPIO_Type * GPIOx,uint32_t pin)424 __STATIC_INLINE uint32_t FL_GPIO_IsEnabledPinInput(GPIO_Type *GPIOx, uint32_t pin)
425 {
426 return (uint32_t)(READ_BIT(GPIOx->INEN, ((pin & 0xffff) << 0x0U)) == ((pin & 0xffff) << 0x0U));
427 }
428
429 /**
430 * @brief GPIOx Pull-Up enable
431 * @rmtoll PUEN FL_GPIO_EnablePinPullup
432 * @param GPIOx GPIO Port
433 * @param pin This parameter can be one of the following values:
434 * @arg @ref FL_GPIO_PIN_0
435 * @arg @ref FL_GPIO_PIN_1
436 * @arg @ref FL_GPIO_PIN_2
437 * @arg @ref FL_GPIO_PIN_3
438 * @arg @ref FL_GPIO_PIN_4
439 * @arg @ref FL_GPIO_PIN_5
440 * @arg @ref FL_GPIO_PIN_6
441 * @arg @ref FL_GPIO_PIN_7
442 * @arg @ref FL_GPIO_PIN_8
443 * @arg @ref FL_GPIO_PIN_9
444 * @arg @ref FL_GPIO_PIN_10
445 * @arg @ref FL_GPIO_PIN_11
446 * @arg @ref FL_GPIO_PIN_12
447 * @arg @ref FL_GPIO_PIN_13
448 * @arg @ref FL_GPIO_PIN_14
449 * @arg @ref FL_GPIO_PIN_15
450 * @arg @ref FL_GPIO_PIN_ALL
451 * @retval None
452 */
FL_GPIO_EnablePinPullup(GPIO_Type * GPIOx,uint32_t pin)453 __STATIC_INLINE void FL_GPIO_EnablePinPullup(GPIO_Type *GPIOx, uint32_t pin)
454 {
455 SET_BIT(GPIOx->PUEN, ((pin & 0xffff) << 0x0U));
456 }
457
458 /**
459 * @brief GPIOx Pull-Up disable
460 * @rmtoll PUEN FL_GPIO_DisablePinPullup
461 * @param GPIOx GPIO Port
462 * @param pin This parameter can be one of the following values:
463 * @arg @ref FL_GPIO_PIN_0
464 * @arg @ref FL_GPIO_PIN_1
465 * @arg @ref FL_GPIO_PIN_2
466 * @arg @ref FL_GPIO_PIN_3
467 * @arg @ref FL_GPIO_PIN_4
468 * @arg @ref FL_GPIO_PIN_5
469 * @arg @ref FL_GPIO_PIN_6
470 * @arg @ref FL_GPIO_PIN_7
471 * @arg @ref FL_GPIO_PIN_8
472 * @arg @ref FL_GPIO_PIN_9
473 * @arg @ref FL_GPIO_PIN_10
474 * @arg @ref FL_GPIO_PIN_11
475 * @arg @ref FL_GPIO_PIN_12
476 * @arg @ref FL_GPIO_PIN_13
477 * @arg @ref FL_GPIO_PIN_14
478 * @arg @ref FL_GPIO_PIN_15
479 * @arg @ref FL_GPIO_PIN_ALL
480 * @retval None
481 */
FL_GPIO_DisablePinPullup(GPIO_Type * GPIOx,uint32_t pin)482 __STATIC_INLINE void FL_GPIO_DisablePinPullup(GPIO_Type *GPIOx, uint32_t pin)
483 {
484 CLEAR_BIT(GPIOx->PUEN, ((pin & 0xffff) << 0x0U));
485 }
486
487 /**
488 * @brief Get GPIOx Pull-Up enable status
489 * @rmtoll PUEN FL_GPIO_IsEnabledPinPullup
490 * @param GPIOx GPIO Port
491 * @param pin This parameter can be one of the following values:
492 * @arg @ref FL_GPIO_PIN_0
493 * @arg @ref FL_GPIO_PIN_1
494 * @arg @ref FL_GPIO_PIN_2
495 * @arg @ref FL_GPIO_PIN_3
496 * @arg @ref FL_GPIO_PIN_4
497 * @arg @ref FL_GPIO_PIN_5
498 * @arg @ref FL_GPIO_PIN_6
499 * @arg @ref FL_GPIO_PIN_7
500 * @arg @ref FL_GPIO_PIN_8
501 * @arg @ref FL_GPIO_PIN_9
502 * @arg @ref FL_GPIO_PIN_10
503 * @arg @ref FL_GPIO_PIN_11
504 * @arg @ref FL_GPIO_PIN_12
505 * @arg @ref FL_GPIO_PIN_13
506 * @arg @ref FL_GPIO_PIN_14
507 * @arg @ref FL_GPIO_PIN_15
508 * @retval State of bit (1 or 0).
509 */
FL_GPIO_IsEnabledPinPullup(GPIO_Type * GPIOx,uint32_t pin)510 __STATIC_INLINE uint32_t FL_GPIO_IsEnabledPinPullup(GPIO_Type *GPIOx, uint32_t pin)
511 {
512 return (uint32_t)(READ_BIT(GPIOx->PUEN, ((pin & 0xffff) << 0x0U)) == ((pin & 0xffff) << 0x0U));
513 }
514
515 /**
516 * @brief GPIOx Open-Drain enable
517 * @rmtoll ODEN FL_GPIO_EnablePinOpenDrain
518 * @param GPIOx GPIO Port
519 * @param pin This parameter can be one of the following values:
520 * @arg @ref FL_GPIO_PIN_0
521 * @arg @ref FL_GPIO_PIN_1
522 * @arg @ref FL_GPIO_PIN_2
523 * @arg @ref FL_GPIO_PIN_3
524 * @arg @ref FL_GPIO_PIN_4
525 * @arg @ref FL_GPIO_PIN_5
526 * @arg @ref FL_GPIO_PIN_6
527 * @arg @ref FL_GPIO_PIN_7
528 * @arg @ref FL_GPIO_PIN_8
529 * @arg @ref FL_GPIO_PIN_9
530 * @arg @ref FL_GPIO_PIN_10
531 * @arg @ref FL_GPIO_PIN_11
532 * @arg @ref FL_GPIO_PIN_12
533 * @arg @ref FL_GPIO_PIN_13
534 * @arg @ref FL_GPIO_PIN_14
535 * @arg @ref FL_GPIO_PIN_15
536 * @arg @ref FL_GPIO_PIN_ALL
537 * @retval None
538 */
FL_GPIO_EnablePinOpenDrain(GPIO_Type * GPIOx,uint32_t pin)539 __STATIC_INLINE void FL_GPIO_EnablePinOpenDrain(GPIO_Type *GPIOx, uint32_t pin)
540 {
541 SET_BIT(GPIOx->ODEN, ((pin & 0xffff) << 0x0U));
542 }
543
544 /**
545 * @brief Open-Drain disable
546 * @rmtoll ODEN FL_GPIO_DisablePinOpenDrain
547 * @param GPIOx GPIO Port
548 * @param pin This parameter can be one of the following values:
549 * @arg @ref FL_GPIO_PIN_0
550 * @arg @ref FL_GPIO_PIN_1
551 * @arg @ref FL_GPIO_PIN_2
552 * @arg @ref FL_GPIO_PIN_3
553 * @arg @ref FL_GPIO_PIN_4
554 * @arg @ref FL_GPIO_PIN_5
555 * @arg @ref FL_GPIO_PIN_6
556 * @arg @ref FL_GPIO_PIN_7
557 * @arg @ref FL_GPIO_PIN_8
558 * @arg @ref FL_GPIO_PIN_9
559 * @arg @ref FL_GPIO_PIN_10
560 * @arg @ref FL_GPIO_PIN_11
561 * @arg @ref FL_GPIO_PIN_12
562 * @arg @ref FL_GPIO_PIN_13
563 * @arg @ref FL_GPIO_PIN_14
564 * @arg @ref FL_GPIO_PIN_15
565 * @arg @ref FL_GPIO_PIN_ALL
566 * @retval None
567 */
FL_GPIO_DisablePinOpenDrain(GPIO_Type * GPIOx,uint32_t pin)568 __STATIC_INLINE void FL_GPIO_DisablePinOpenDrain(GPIO_Type *GPIOx, uint32_t pin)
569 {
570 CLEAR_BIT(GPIOx->ODEN, ((pin & 0xffff) << 0x0U));
571 }
572
573 /**
574 * @brief Get Open-Drain enable status
575 * @rmtoll ODEN FL_GPIO_IsEnabledPinOpenDrain
576 * @param GPIOx GPIO Port
577 * @param pin This parameter can be one of the following values:
578 * @arg @ref FL_GPIO_PIN_0
579 * @arg @ref FL_GPIO_PIN_1
580 * @arg @ref FL_GPIO_PIN_2
581 * @arg @ref FL_GPIO_PIN_3
582 * @arg @ref FL_GPIO_PIN_4
583 * @arg @ref FL_GPIO_PIN_5
584 * @arg @ref FL_GPIO_PIN_6
585 * @arg @ref FL_GPIO_PIN_7
586 * @arg @ref FL_GPIO_PIN_8
587 * @arg @ref FL_GPIO_PIN_9
588 * @arg @ref FL_GPIO_PIN_10
589 * @arg @ref FL_GPIO_PIN_11
590 * @arg @ref FL_GPIO_PIN_12
591 * @arg @ref FL_GPIO_PIN_13
592 * @arg @ref FL_GPIO_PIN_14
593 * @arg @ref FL_GPIO_PIN_15
594 * @retval State of bit (1 or 0).
595 */
FL_GPIO_IsEnabledPinOpenDrain(GPIO_Type * GPIOx,uint32_t pin)596 __STATIC_INLINE uint32_t FL_GPIO_IsEnabledPinOpenDrain(GPIO_Type *GPIOx, uint32_t pin)
597 {
598 return (uint32_t)(READ_BIT(GPIOx->ODEN, ((pin & 0xffff) << 0x0U)) == ((pin & 0xffff) << 0x0U));
599 }
600
601 /**
602 * @brief GPIOx digital function enable
603 * @rmtoll DFS FL_GPIO_EnablePinRemap
604 * @param GPIOx GPIO Port
605 * @param pin This parameter can be one of the following values:
606 * @arg @ref FL_GPIO_PIN_0
607 * @arg @ref FL_GPIO_PIN_1
608 * @arg @ref FL_GPIO_PIN_2
609 * @arg @ref FL_GPIO_PIN_3
610 * @arg @ref FL_GPIO_PIN_4
611 * @arg @ref FL_GPIO_PIN_5
612 * @arg @ref FL_GPIO_PIN_6
613 * @arg @ref FL_GPIO_PIN_7
614 * @arg @ref FL_GPIO_PIN_8
615 * @arg @ref FL_GPIO_PIN_9
616 * @arg @ref FL_GPIO_PIN_10
617 * @arg @ref FL_GPIO_PIN_11
618 * @arg @ref FL_GPIO_PIN_12
619 * @arg @ref FL_GPIO_PIN_13
620 * @arg @ref FL_GPIO_PIN_14
621 * @arg @ref FL_GPIO_PIN_15
622 * @arg @ref FL_GPIO_PIN_ALL
623 * @retval None
624 */
FL_GPIO_EnablePinRemap(GPIO_Type * GPIOx,uint32_t pin)625 __STATIC_INLINE void FL_GPIO_EnablePinRemap(GPIO_Type *GPIOx, uint32_t pin)
626 {
627 SET_BIT(GPIOx->DFS, ((pin & 0xffff) << 0x0U));
628 }
629
630 /**
631 * @brief GPIOx digital function disable
632 * @rmtoll DFS FL_GPIO_DisablePinRemap
633 * @param GPIOx GPIO Port
634 * @param pin This parameter can be one of the following values:
635 * @arg @ref FL_GPIO_PIN_0
636 * @arg @ref FL_GPIO_PIN_1
637 * @arg @ref FL_GPIO_PIN_2
638 * @arg @ref FL_GPIO_PIN_3
639 * @arg @ref FL_GPIO_PIN_4
640 * @arg @ref FL_GPIO_PIN_5
641 * @arg @ref FL_GPIO_PIN_6
642 * @arg @ref FL_GPIO_PIN_7
643 * @arg @ref FL_GPIO_PIN_8
644 * @arg @ref FL_GPIO_PIN_9
645 * @arg @ref FL_GPIO_PIN_10
646 * @arg @ref FL_GPIO_PIN_11
647 * @arg @ref FL_GPIO_PIN_12
648 * @arg @ref FL_GPIO_PIN_13
649 * @arg @ref FL_GPIO_PIN_14
650 * @arg @ref FL_GPIO_PIN_15
651 * @arg @ref FL_GPIO_PIN_ALL
652 * @retval None
653 */
FL_GPIO_DisablePinRemap(GPIO_Type * GPIOx,uint32_t pin)654 __STATIC_INLINE void FL_GPIO_DisablePinRemap(GPIO_Type *GPIOx, uint32_t pin)
655 {
656 CLEAR_BIT(GPIOx->DFS, ((pin & 0xffff) << 0x0U));
657 }
658
659 /**
660 * @brief Get GPIOx digital function enable status
661 * @rmtoll DFS FL_GPIO_IsEnabledPinRemap
662 * @param GPIOx GPIO Port
663 * @param pin This parameter can be one of the following values:
664 * @arg @ref FL_GPIO_PIN_0
665 * @arg @ref FL_GPIO_PIN_1
666 * @arg @ref FL_GPIO_PIN_2
667 * @arg @ref FL_GPIO_PIN_3
668 * @arg @ref FL_GPIO_PIN_4
669 * @arg @ref FL_GPIO_PIN_5
670 * @arg @ref FL_GPIO_PIN_6
671 * @arg @ref FL_GPIO_PIN_7
672 * @arg @ref FL_GPIO_PIN_8
673 * @arg @ref FL_GPIO_PIN_9
674 * @arg @ref FL_GPIO_PIN_10
675 * @arg @ref FL_GPIO_PIN_11
676 * @arg @ref FL_GPIO_PIN_12
677 * @arg @ref FL_GPIO_PIN_13
678 * @arg @ref FL_GPIO_PIN_14
679 * @arg @ref FL_GPIO_PIN_15
680 * @retval State of bit (1 or 0).
681 */
FL_GPIO_IsEnabledPinRemap(GPIO_Type * GPIOx,uint32_t pin)682 __STATIC_INLINE uint32_t FL_GPIO_IsEnabledPinRemap(GPIO_Type *GPIOx, uint32_t pin)
683 {
684 return (uint32_t)(READ_BIT(GPIOx->DFS, ((pin & 0xffff) << 0x0U)) == ((pin & 0xffff) << 0x0U));
685 }
686
687 /**
688 * @brief GPIOx analog channel enable
689 * @rmtoll ANEN FL_GPIO_EnablePinAnalogSwitch
690 * @param GPIOx GPIO Port
691 * @param pin This parameter can be one of the following values:
692 * @arg @ref FL_GPIO_PIN_0
693 * @arg @ref FL_GPIO_PIN_1
694 * @arg @ref FL_GPIO_PIN_2
695 * @arg @ref FL_GPIO_PIN_3
696 * @arg @ref FL_GPIO_PIN_4
697 * @arg @ref FL_GPIO_PIN_5
698 * @arg @ref FL_GPIO_PIN_6
699 * @arg @ref FL_GPIO_PIN_7
700 * @arg @ref FL_GPIO_PIN_8
701 * @arg @ref FL_GPIO_PIN_9
702 * @arg @ref FL_GPIO_PIN_10
703 * @arg @ref FL_GPIO_PIN_11
704 * @arg @ref FL_GPIO_PIN_12
705 * @arg @ref FL_GPIO_PIN_13
706 * @arg @ref FL_GPIO_PIN_14
707 * @arg @ref FL_GPIO_PIN_15
708 * @arg @ref FL_GPIO_PIN_ALL
709 * @arg @ref FL_GPIO_EXTI_LINE_0
710 * @arg @ref FL_GPIO_EXTI_LINE_1
711 * @arg @ref FL_GPIO_EXTI_LINE_2
712 * @arg @ref FL_GPIO_EXTI_LINE_3
713 * @arg @ref FL_GPIO_EXTI_LINE_4
714 * @arg @ref FL_GPIO_EXTI_LINE_7
715 * @arg @ref FL_GPIO_EXTI_LINE_8
716 * @arg @ref FL_GPIO_EXTI_LINE_9
717 * @retval None
718 */
FL_GPIO_EnablePinAnalogSwitch(GPIO_Type * GPIOx,uint32_t pin)719 __STATIC_INLINE void FL_GPIO_EnablePinAnalogSwitch(GPIO_Type *GPIOx, uint32_t pin)
720 {
721 SET_BIT(GPIOx->ANEN, ((pin & 0xffff) << 0x0U));
722 }
723
724 /**
725 * @brief GPIOx analog channel disable
726 * @rmtoll ANEN FL_GPIO_DisablePinAnalogSwitch
727 * @param GPIOx GPIO Port
728 * @param pin This parameter can be one of the following values:
729 * @arg @ref FL_GPIO_PIN_0
730 * @arg @ref FL_GPIO_PIN_1
731 * @arg @ref FL_GPIO_PIN_2
732 * @arg @ref FL_GPIO_PIN_3
733 * @arg @ref FL_GPIO_PIN_4
734 * @arg @ref FL_GPIO_PIN_5
735 * @arg @ref FL_GPIO_PIN_6
736 * @arg @ref FL_GPIO_PIN_7
737 * @arg @ref FL_GPIO_PIN_8
738 * @arg @ref FL_GPIO_PIN_9
739 * @arg @ref FL_GPIO_PIN_10
740 * @arg @ref FL_GPIO_PIN_11
741 * @arg @ref FL_GPIO_PIN_12
742 * @arg @ref FL_GPIO_PIN_13
743 * @arg @ref FL_GPIO_PIN_14
744 * @arg @ref FL_GPIO_PIN_15
745 * @arg @ref FL_GPIO_PIN_ALL
746 * @retval None
747 */
FL_GPIO_DisablePinAnalogSwitch(GPIO_Type * GPIOx,uint32_t pin)748 __STATIC_INLINE void FL_GPIO_DisablePinAnalogSwitch(GPIO_Type *GPIOx, uint32_t pin)
749 {
750 CLEAR_BIT(GPIOx->ANEN, ((pin & 0xffff) << 0x0U));
751 }
752
753 /**
754 * @brief Get GPIOx analog channel enable status
755 * @rmtoll ANEN FL_GPIO_IsEnabledPinAnalogSwitch
756 * @param GPIOx GPIO Port
757 * @param pin This parameter can be one of the following values:
758 * @arg @ref FL_GPIO_PIN_0
759 * @arg @ref FL_GPIO_PIN_1
760 * @arg @ref FL_GPIO_PIN_2
761 * @arg @ref FL_GPIO_PIN_3
762 * @arg @ref FL_GPIO_PIN_4
763 * @arg @ref FL_GPIO_PIN_5
764 * @arg @ref FL_GPIO_PIN_6
765 * @arg @ref FL_GPIO_PIN_7
766 * @arg @ref FL_GPIO_PIN_8
767 * @arg @ref FL_GPIO_PIN_9
768 * @arg @ref FL_GPIO_PIN_10
769 * @arg @ref FL_GPIO_PIN_11
770 * @arg @ref FL_GPIO_PIN_12
771 * @arg @ref FL_GPIO_PIN_13
772 * @arg @ref FL_GPIO_PIN_14
773 * @arg @ref FL_GPIO_PIN_15
774 * @arg @ref FL_GPIO_PIN_ALL
775 * @retval State of bit (1 or 0).
776 */
FL_GPIO_IsEnabledPinAnalogSwitch(GPIO_Type * GPIOx,uint32_t pin)777 __STATIC_INLINE uint32_t FL_GPIO_IsEnabledPinAnalogSwitch(GPIO_Type *GPIOx, uint32_t pin)
778 {
779 return (uint32_t)(READ_BIT(GPIOx->ANEN, ((pin & 0xffff) << 0x0U)) == ((pin & 0xffff) << 0x0U));
780 }
781
782 /**
783 * @brief Set Portx mode
784 * @rmtoll FCR FL_GPIO_SetPinMode
785 * @param GPIOx GPIO Port
786 * @param pin This parameter can be one of the following values:
787 * @arg @ref FL_GPIO_PIN_0
788 * @arg @ref FL_GPIO_PIN_1
789 * @arg @ref FL_GPIO_PIN_2
790 * @arg @ref FL_GPIO_PIN_3
791 * @arg @ref FL_GPIO_PIN_4
792 * @arg @ref FL_GPIO_PIN_5
793 * @arg @ref FL_GPIO_PIN_6
794 * @arg @ref FL_GPIO_PIN_7
795 * @arg @ref FL_GPIO_PIN_8
796 * @arg @ref FL_GPIO_PIN_9
797 * @arg @ref FL_GPIO_PIN_10
798 * @arg @ref FL_GPIO_PIN_11
799 * @arg @ref FL_GPIO_PIN_12
800 * @arg @ref FL_GPIO_PIN_13
801 * @arg @ref FL_GPIO_PIN_14
802 * @arg @ref FL_GPIO_PIN_15
803 * @param mode This parameter can be one of the following values:
804 * @arg @ref FL_GPIO_MODE_INPUT
805 * @arg @ref FL_GPIO_MODE_OUTPUT
806 * @arg @ref FL_GPIO_MODE_DIGITAL
807 * @arg @ref FL_GPIO_MODE_ANALOG
808 * @retval None
809 */
FL_GPIO_SetPinMode(GPIO_Type * GPIOx,uint32_t pin,uint32_t mode)810 __STATIC_INLINE void FL_GPIO_SetPinMode(GPIO_Type *GPIOx, uint32_t pin, uint32_t mode)
811 {
812 MODIFY_REG(GPIOx->FCR, ((pin * pin) * GPIO_FCR), ((pin * pin) * mode));
813 }
814
815 /**
816 * @brief Get Portx mode
817 * @rmtoll FCR FL_GPIO_GetPinMode
818 * @param GPIOx GPIO Port
819 * @param pin This parameter can be one of the following values:
820 * @arg @ref FL_GPIO_PIN_0
821 * @arg @ref FL_GPIO_PIN_1
822 * @arg @ref FL_GPIO_PIN_2
823 * @arg @ref FL_GPIO_PIN_3
824 * @arg @ref FL_GPIO_PIN_4
825 * @arg @ref FL_GPIO_PIN_5
826 * @arg @ref FL_GPIO_PIN_6
827 * @arg @ref FL_GPIO_PIN_7
828 * @arg @ref FL_GPIO_PIN_8
829 * @arg @ref FL_GPIO_PIN_9
830 * @arg @ref FL_GPIO_PIN_10
831 * @arg @ref FL_GPIO_PIN_11
832 * @arg @ref FL_GPIO_PIN_12
833 * @arg @ref FL_GPIO_PIN_13
834 * @arg @ref FL_GPIO_PIN_14
835 * @arg @ref FL_GPIO_PIN_15
836 * @retval Returned value can be one of the following values:
837 * @arg @ref FL_GPIO_MODE_INPUT
838 * @arg @ref FL_GPIO_MODE_OUTPUT
839 * @arg @ref FL_GPIO_MODE_DIGITAL
840 * @arg @ref FL_GPIO_MODE_ANALOG
841 */
FL_GPIO_GetPinMode(GPIO_Type * GPIOx,uint32_t pin)842 __STATIC_INLINE uint32_t FL_GPIO_GetPinMode(GPIO_Type *GPIOx, uint32_t pin)
843 {
844 return (uint32_t)(READ_BIT(GPIOx->FCR, ((pin * pin) * GPIO_FCR)) / (pin * pin));
845 }
846
847 /**
848 * @brief Set GPIO output data
849 * @rmtoll DO FL_GPIO_WriteOutputPort
850 * @param GPIOx GPIO Port
851 * @param output Level value for each pin of the port
852 * @retval None
853 */
FL_GPIO_WriteOutputPort(GPIO_Type * GPIOx,uint32_t output)854 __STATIC_INLINE void FL_GPIO_WriteOutputPort(GPIO_Type *GPIOx, uint32_t output)
855 {
856 MODIFY_REG(GPIOx->DO, (0xffffU << 0U), (output << 0U));
857 }
858
859 /**
860 * @brief Get GPIO output data
861 * @rmtoll DO FL_GPIO_ReadOutputPort
862 * @param GPIOx GPIO Port
863 * @retval Output data register value of port
864 */
FL_GPIO_ReadOutputPort(GPIO_Type * GPIOx)865 __STATIC_INLINE uint32_t FL_GPIO_ReadOutputPort(GPIO_Type *GPIOx)
866 {
867 return (uint32_t)(READ_BIT(GPIOx->DO, 0xffffU) >> 0U);
868 }
869
870 /**
871 * @brief Get GPIO output pin status
872 * @rmtoll DO FL_GPIO_GetOutputPin
873 * @param GPIOx GPIO Port
874 * @param pin This parameter can be one of the following values:
875 * @arg @ref FL_GPIO_PIN_0
876 * @arg @ref FL_GPIO_PIN_1
877 * @arg @ref FL_GPIO_PIN_2
878 * @arg @ref FL_GPIO_PIN_3
879 * @arg @ref FL_GPIO_PIN_4
880 * @arg @ref FL_GPIO_PIN_5
881 * @arg @ref FL_GPIO_PIN_6
882 * @arg @ref FL_GPIO_PIN_7
883 * @arg @ref FL_GPIO_PIN_8
884 * @arg @ref FL_GPIO_PIN_9
885 * @arg @ref FL_GPIO_PIN_10
886 * @arg @ref FL_GPIO_PIN_11
887 * @arg @ref FL_GPIO_PIN_12
888 * @arg @ref FL_GPIO_PIN_13
889 * @arg @ref FL_GPIO_PIN_14
890 * @arg @ref FL_GPIO_PIN_15
891 * @retval State of bit (1 or 0).
892 */
FL_GPIO_GetOutputPin(GPIO_Type * GPIOx,uint32_t pin)893 __STATIC_INLINE uint32_t FL_GPIO_GetOutputPin(GPIO_Type *GPIOx, uint32_t pin)
894 {
895 return (uint32_t)(READ_BIT(GPIOx->DO, ((pin & 0xffff) << 0x0U)) == ((pin & 0xffff) << 0x0U));
896 }
897
898 /**
899 * @brief Toggle output pin
900 * @rmtoll DO FL_GPIO_ToggleOutputPin
901 * @param GPIOx GPIO Port
902 * @param pin This parameter can be one of the following values:
903 * @arg @ref FL_GPIO_PIN_0
904 * @arg @ref FL_GPIO_PIN_1
905 * @arg @ref FL_GPIO_PIN_2
906 * @arg @ref FL_GPIO_PIN_3
907 * @arg @ref FL_GPIO_PIN_4
908 * @arg @ref FL_GPIO_PIN_5
909 * @arg @ref FL_GPIO_PIN_6
910 * @arg @ref FL_GPIO_PIN_7
911 * @arg @ref FL_GPIO_PIN_8
912 * @arg @ref FL_GPIO_PIN_9
913 * @arg @ref FL_GPIO_PIN_10
914 * @arg @ref FL_GPIO_PIN_11
915 * @arg @ref FL_GPIO_PIN_12
916 * @arg @ref FL_GPIO_PIN_13
917 * @arg @ref FL_GPIO_PIN_14
918 * @arg @ref FL_GPIO_PIN_15
919 * @arg @ref FL_GPIO_PIN_ALL
920 * @retval None
921 */
FL_GPIO_ToggleOutputPin(GPIO_Type * GPIOx,uint32_t pin)922 __STATIC_INLINE void FL_GPIO_ToggleOutputPin(GPIO_Type *GPIOx, uint32_t pin)
923 {
924 if(pin&GPIOx->DO)
925 {
926 WRITE_REG(GPIOx->DRST, pin);
927 }
928 else
929 {
930 WRITE_REG(GPIOx->DSET, pin);
931 }
932 }
933
934 /**
935 * @brief Get input data
936 * @rmtoll DIN FL_GPIO_ReadInputPort
937 * @param GPIOx GPIO Port
938 * @retval Input data register value of port
939 */
FL_GPIO_ReadInputPort(GPIO_Type * GPIOx)940 __STATIC_INLINE uint32_t FL_GPIO_ReadInputPort(GPIO_Type *GPIOx)
941 {
942 return (uint32_t)(READ_BIT(GPIOx->DIN, 0xffffU) >> 0U);
943 }
944
945 /**
946 * @brief Get GPIO input set status
947 * @rmtoll DIN FL_GPIO_GetInputPin
948 * @param GPIOx GPIO Port
949 * @param pin This parameter can be one of the following values:
950 * @arg @ref FL_GPIO_PIN_0
951 * @arg @ref FL_GPIO_PIN_1
952 * @arg @ref FL_GPIO_PIN_2
953 * @arg @ref FL_GPIO_PIN_3
954 * @arg @ref FL_GPIO_PIN_4
955 * @arg @ref FL_GPIO_PIN_5
956 * @arg @ref FL_GPIO_PIN_6
957 * @arg @ref FL_GPIO_PIN_7
958 * @arg @ref FL_GPIO_PIN_8
959 * @arg @ref FL_GPIO_PIN_9
960 * @arg @ref FL_GPIO_PIN_10
961 * @arg @ref FL_GPIO_PIN_11
962 * @arg @ref FL_GPIO_PIN_12
963 * @arg @ref FL_GPIO_PIN_13
964 * @arg @ref FL_GPIO_PIN_14
965 * @arg @ref FL_GPIO_PIN_15
966 * @retval State of bit (1 or 0).
967 */
FL_GPIO_GetInputPin(GPIO_Type * GPIOx,uint32_t pin)968 __STATIC_INLINE uint32_t FL_GPIO_GetInputPin(GPIO_Type *GPIOx, uint32_t pin)
969 {
970 return (uint32_t)(READ_BIT(GPIOx->DIN, ((pin & 0xffff) << 0x0U)) == ((pin & 0xffff) << 0x0U));
971 }
972
973 /**
974 * @brief Set pin output 1
975 * @rmtoll DSET FL_GPIO_SetOutputPin
976 * @param GPIOx GPIO Port
977 * @param pin This parameter can be one of the following values:
978 * @arg @ref FL_GPIO_PIN_0
979 * @arg @ref FL_GPIO_PIN_1
980 * @arg @ref FL_GPIO_PIN_2
981 * @arg @ref FL_GPIO_PIN_3
982 * @arg @ref FL_GPIO_PIN_4
983 * @arg @ref FL_GPIO_PIN_5
984 * @arg @ref FL_GPIO_PIN_6
985 * @arg @ref FL_GPIO_PIN_7
986 * @arg @ref FL_GPIO_PIN_8
987 * @arg @ref FL_GPIO_PIN_9
988 * @arg @ref FL_GPIO_PIN_10
989 * @arg @ref FL_GPIO_PIN_11
990 * @arg @ref FL_GPIO_PIN_12
991 * @arg @ref FL_GPIO_PIN_13
992 * @arg @ref FL_GPIO_PIN_14
993 * @arg @ref FL_GPIO_PIN_15
994 * @arg @ref FL_GPIO_PIN_ALL
995 * @retval None
996 */
FL_GPIO_SetOutputPin(GPIO_Type * GPIOx,uint32_t pin)997 __STATIC_INLINE void FL_GPIO_SetOutputPin(GPIO_Type *GPIOx, uint32_t pin)
998 {
999 SET_BIT(GPIOx->DSET, ((pin & 0xffff) << 0x0U));
1000 }
1001
1002 /**
1003 * @brief Set pin output 0
1004 * @rmtoll DRST FL_GPIO_ResetOutputPin
1005 * @param GPIOx GPIO Port
1006 * @param pin This parameter can be one of the following values:
1007 * @arg @ref FL_GPIO_PIN_0
1008 * @arg @ref FL_GPIO_PIN_1
1009 * @arg @ref FL_GPIO_PIN_2
1010 * @arg @ref FL_GPIO_PIN_3
1011 * @arg @ref FL_GPIO_PIN_4
1012 * @arg @ref FL_GPIO_PIN_5
1013 * @arg @ref FL_GPIO_PIN_6
1014 * @arg @ref FL_GPIO_PIN_7
1015 * @arg @ref FL_GPIO_PIN_8
1016 * @arg @ref FL_GPIO_PIN_9
1017 * @arg @ref FL_GPIO_PIN_10
1018 * @arg @ref FL_GPIO_PIN_11
1019 * @arg @ref FL_GPIO_PIN_12
1020 * @arg @ref FL_GPIO_PIN_13
1021 * @arg @ref FL_GPIO_PIN_14
1022 * @arg @ref FL_GPIO_PIN_15
1023 * @arg @ref FL_GPIO_PIN_ALL
1024 * @retval None
1025 */
FL_GPIO_ResetOutputPin(GPIO_Type * GPIOx,uint32_t pin)1026 __STATIC_INLINE void FL_GPIO_ResetOutputPin(GPIO_Type *GPIOx, uint32_t pin)
1027 {
1028 SET_BIT(GPIOx->DRST, ((pin & 0xffff) << 0x0U));
1029 }
1030
1031 /**
1032 * @brief EXTI edge select
1033 * @rmtoll EXTIEDS FL_GPIO_SetTriggerEdge
1034 * @param GPIOx GPIO Port
1035 * @param line This parameter can be one of the following values:
1036 * @arg @ref FL_GPIO_EXTI_LINE_0
1037 * @arg @ref FL_GPIO_EXTI_LINE_1
1038 * @arg @ref FL_GPIO_EXTI_LINE_2
1039 * @arg @ref FL_GPIO_EXTI_LINE_3
1040 * @arg @ref FL_GPIO_EXTI_LINE_4
1041 * @arg @ref FL_GPIO_EXTI_LINE_5
1042 * @arg @ref FL_GPIO_EXTI_LINE_6
1043 * @arg @ref FL_GPIO_EXTI_LINE_7
1044 * @arg @ref FL_GPIO_EXTI_LINE_8
1045 * @arg @ref FL_GPIO_EXTI_LINE_9
1046 * @arg @ref FL_GPIO_EXTI_LINE_10
1047 * @arg @ref FL_GPIO_EXTI_LINE_11
1048 * @arg @ref FL_GPIO_EXTI_LINE_12
1049 * @arg @ref FL_GPIO_EXTI_LINE_13
1050 * @arg @ref FL_GPIO_EXTI_LINE_14
1051 * @arg @ref FL_GPIO_EXTI_LINE_15
1052 * @param edge This parameter can be one of the following values:
1053 * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_RISING
1054 * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_FALLING
1055 * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_BOTH
1056 * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_DISABLE
1057 * @retval None
1058 */
FL_GPIO_SetTriggerEdge(GPIO_COMMON_Type * GPIOx,uint32_t line,uint32_t edge)1059 __STATIC_INLINE void FL_GPIO_SetTriggerEdge(GPIO_COMMON_Type *GPIOx, uint32_t line, uint32_t edge)
1060 {
1061 MODIFY_REG(GPIOx->EXTIEDS, ((line * line) * GPIO_EXTIEDS), ((line * line) * edge));
1062 }
1063
1064 /**
1065 * @brief Get EXTI edge select
1066 * @rmtoll EXTIEDS FL_GPIO_GetTriggerEdge
1067 * @param GPIOx GPIO Port
1068 * @param line This parameter can be one of the following values:
1069 * @arg @ref FL_GPIO_EXTI_LINE_0
1070 * @arg @ref FL_GPIO_EXTI_LINE_1
1071 * @arg @ref FL_GPIO_EXTI_LINE_2
1072 * @arg @ref FL_GPIO_EXTI_LINE_3
1073 * @arg @ref FL_GPIO_EXTI_LINE_4
1074 * @arg @ref FL_GPIO_EXTI_LINE_5
1075 * @arg @ref FL_GPIO_EXTI_LINE_6
1076 * @arg @ref FL_GPIO_EXTI_LINE_7
1077 * @arg @ref FL_GPIO_EXTI_LINE_8
1078 * @arg @ref FL_GPIO_EXTI_LINE_9
1079 * @arg @ref FL_GPIO_EXTI_LINE_10
1080 * @arg @ref FL_GPIO_EXTI_LINE_11
1081 * @arg @ref FL_GPIO_EXTI_LINE_12
1082 * @arg @ref FL_GPIO_EXTI_LINE_13
1083 * @arg @ref FL_GPIO_EXTI_LINE_14
1084 * @arg @ref FL_GPIO_EXTI_LINE_15
1085 * @retval Returned value can be one of the following values:
1086 * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_RISING
1087 * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_FALLING
1088 * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_BOTH
1089 * @arg @ref FL_GPIO_EXTI_TRIGGER_EDGE_DISABLE
1090 */
FL_GPIO_GetTriggerEdge(GPIO_COMMON_Type * GPIOx,uint32_t line)1091 __STATIC_INLINE uint32_t FL_GPIO_GetTriggerEdge(GPIO_COMMON_Type *GPIOx, uint32_t line)
1092 {
1093 return (uint32_t)(READ_BIT(GPIOx->EXTIEDS, ((line * line) * GPIO_EXTIEDS)) / (line * line));
1094 }
1095
1096 /**
1097 * @brief EXTI digital filter enable
1098 * @rmtoll EXTIDF FL_GPIO_EnableDigitalFilter
1099 * @param GPIOx GPIO Port
1100 * @param line This parameter can be one of the following values:
1101 * @arg @ref FL_GPIO_EXTI_LINE_0
1102 * @arg @ref FL_GPIO_EXTI_LINE_1
1103 * @arg @ref FL_GPIO_EXTI_LINE_2
1104 * @arg @ref FL_GPIO_EXTI_LINE_3
1105 * @arg @ref FL_GPIO_EXTI_LINE_4
1106 * @arg @ref FL_GPIO_EXTI_LINE_5
1107 * @arg @ref FL_GPIO_EXTI_LINE_6
1108 * @arg @ref FL_GPIO_EXTI_LINE_7
1109 * @arg @ref FL_GPIO_EXTI_LINE_8
1110 * @arg @ref FL_GPIO_EXTI_LINE_9
1111 * @arg @ref FL_GPIO_EXTI_LINE_10
1112 * @arg @ref FL_GPIO_EXTI_LINE_11
1113 * @arg @ref FL_GPIO_EXTI_LINE_12
1114 * @arg @ref FL_GPIO_EXTI_LINE_13
1115 * @arg @ref FL_GPIO_EXTI_LINE_14
1116 * @arg @ref FL_GPIO_EXTI_LINE_15
1117 * @arg @ref FL_GPIO_EXTI_LINE_ALL
1118 * @retval None
1119 */
FL_GPIO_EnableDigitalFilter(GPIO_COMMON_Type * GPIOx,uint32_t line)1120 __STATIC_INLINE void FL_GPIO_EnableDigitalFilter(GPIO_COMMON_Type *GPIOx, uint32_t line)
1121 {
1122 SET_BIT(GPIOx->EXTIDF, ((line & 0xffff) << 0x0U));
1123 }
1124
1125 /**
1126 * @brief EXTI digital filter disable
1127 * @rmtoll EXTIDF FL_GPIO_DisableDigitalFilter
1128 * @param GPIOx GPIO Port
1129 * @param line This parameter can be one of the following values:
1130 * @arg @ref FL_GPIO_EXTI_LINE_0
1131 * @arg @ref FL_GPIO_EXTI_LINE_1
1132 * @arg @ref FL_GPIO_EXTI_LINE_2
1133 * @arg @ref FL_GPIO_EXTI_LINE_3
1134 * @arg @ref FL_GPIO_EXTI_LINE_4
1135 * @arg @ref FL_GPIO_EXTI_LINE_5
1136 * @arg @ref FL_GPIO_EXTI_LINE_6
1137 * @arg @ref FL_GPIO_EXTI_LINE_7
1138 * @arg @ref FL_GPIO_EXTI_LINE_8
1139 * @arg @ref FL_GPIO_EXTI_LINE_9
1140 * @arg @ref FL_GPIO_EXTI_LINE_10
1141 * @arg @ref FL_GPIO_EXTI_LINE_11
1142 * @arg @ref FL_GPIO_EXTI_LINE_12
1143 * @arg @ref FL_GPIO_EXTI_LINE_13
1144 * @arg @ref FL_GPIO_EXTI_LINE_14
1145 * @arg @ref FL_GPIO_EXTI_LINE_15
1146 * @arg @ref FL_GPIO_EXTI_LINE_ALL
1147 * @retval None
1148 */
FL_GPIO_DisableDigitalFilter(GPIO_COMMON_Type * GPIOx,uint32_t line)1149 __STATIC_INLINE void FL_GPIO_DisableDigitalFilter(GPIO_COMMON_Type *GPIOx, uint32_t line)
1150 {
1151 CLEAR_BIT(GPIOx->EXTIDF, ((line & 0xffff) << 0x0U));
1152 }
1153
1154 /**
1155 * @brief Get EXTI digital filter enable status
1156 * @rmtoll EXTIDF FL_GPIO_IsEnabledDigitalFilter
1157 * @param GPIOx GPIO Port
1158 * @param line This parameter can be one of the following values:
1159 * @arg @ref FL_GPIO_EXTI_LINE_0
1160 * @arg @ref FL_GPIO_EXTI_LINE_1
1161 * @arg @ref FL_GPIO_EXTI_LINE_2
1162 * @arg @ref FL_GPIO_EXTI_LINE_3
1163 * @arg @ref FL_GPIO_EXTI_LINE_4
1164 * @arg @ref FL_GPIO_EXTI_LINE_5
1165 * @arg @ref FL_GPIO_EXTI_LINE_6
1166 * @arg @ref FL_GPIO_EXTI_LINE_7
1167 * @arg @ref FL_GPIO_EXTI_LINE_8
1168 * @arg @ref FL_GPIO_EXTI_LINE_9
1169 * @arg @ref FL_GPIO_EXTI_LINE_10
1170 * @arg @ref FL_GPIO_EXTI_LINE_11
1171 * @arg @ref FL_GPIO_EXTI_LINE_12
1172 * @arg @ref FL_GPIO_EXTI_LINE_13
1173 * @arg @ref FL_GPIO_EXTI_LINE_14
1174 * @arg @ref FL_GPIO_EXTI_LINE_15
1175 * @retval State of bit (1 or 0).
1176 */
FL_GPIO_IsEnabledDigitalFilter(GPIO_COMMON_Type * GPIOx,uint32_t line)1177 __STATIC_INLINE uint32_t FL_GPIO_IsEnabledDigitalFilter(GPIO_COMMON_Type *GPIOx, uint32_t line)
1178 {
1179 return (uint32_t)(READ_BIT(GPIOx->EXTIDF, ((line & 0xffff) << 0x0U)) == ((line & 0xffff) << 0x0U));
1180 }
1181
1182 /**
1183 * @brief Get external interrupt flag status
1184 * @rmtoll EXTIISR FL_GPIO_IsActiveFlag_EXTI
1185 * @param GPIOx GPIO Port
1186 * @param line This parameter can be one of the following values:
1187 * @arg @ref FL_GPIO_EXTI_LINE_0
1188 * @arg @ref FL_GPIO_EXTI_LINE_1
1189 * @arg @ref FL_GPIO_EXTI_LINE_2
1190 * @arg @ref FL_GPIO_EXTI_LINE_3
1191 * @arg @ref FL_GPIO_EXTI_LINE_4
1192 * @arg @ref FL_GPIO_EXTI_LINE_5
1193 * @arg @ref FL_GPIO_EXTI_LINE_6
1194 * @arg @ref FL_GPIO_EXTI_LINE_7
1195 * @arg @ref FL_GPIO_EXTI_LINE_8
1196 * @arg @ref FL_GPIO_EXTI_LINE_9
1197 * @arg @ref FL_GPIO_EXTI_LINE_10
1198 * @arg @ref FL_GPIO_EXTI_LINE_11
1199 * @arg @ref FL_GPIO_EXTI_LINE_12
1200 * @arg @ref FL_GPIO_EXTI_LINE_13
1201 * @arg @ref FL_GPIO_EXTI_LINE_14
1202 * @arg @ref FL_GPIO_EXTI_LINE_15
1203 * @retval State of bit (1 or 0).
1204 */
FL_GPIO_IsActiveFlag_EXTI(GPIO_COMMON_Type * GPIOx,uint32_t line)1205 __STATIC_INLINE uint32_t FL_GPIO_IsActiveFlag_EXTI(GPIO_COMMON_Type *GPIOx, uint32_t line)
1206 {
1207 return (uint32_t)(READ_BIT(GPIOx->EXTIISR, ((line & 0xffff) << 0x0U)) == ((line & 0xffff) << 0x0U));
1208 }
1209
1210 /**
1211 * @brief Clear external interrupt flag
1212 * @rmtoll EXTIISR FL_GPIO_ClearFlag_EXTI
1213 * @param GPIOx GPIO Port
1214 * @param line This parameter can be one of the following values:
1215 * @arg @ref FL_GPIO_EXTI_LINE_0
1216 * @arg @ref FL_GPIO_EXTI_LINE_1
1217 * @arg @ref FL_GPIO_EXTI_LINE_2
1218 * @arg @ref FL_GPIO_EXTI_LINE_3
1219 * @arg @ref FL_GPIO_EXTI_LINE_4
1220 * @arg @ref FL_GPIO_EXTI_LINE_5
1221 * @arg @ref FL_GPIO_EXTI_LINE_6
1222 * @arg @ref FL_GPIO_EXTI_LINE_7
1223 * @arg @ref FL_GPIO_EXTI_LINE_8
1224 * @arg @ref FL_GPIO_EXTI_LINE_9
1225 * @arg @ref FL_GPIO_EXTI_LINE_10
1226 * @arg @ref FL_GPIO_EXTI_LINE_11
1227 * @arg @ref FL_GPIO_EXTI_LINE_12
1228 * @arg @ref FL_GPIO_EXTI_LINE_13
1229 * @arg @ref FL_GPIO_EXTI_LINE_14
1230 * @arg @ref FL_GPIO_EXTI_LINE_15
1231 * @arg @ref FL_GPIO_EXTI_LINE_ALL
1232 * @retval None
1233 */
FL_GPIO_ClearFlag_EXTI(GPIO_COMMON_Type * GPIOx,uint32_t line)1234 __STATIC_INLINE void FL_GPIO_ClearFlag_EXTI(GPIO_COMMON_Type *GPIOx, uint32_t line)
1235 {
1236 WRITE_REG(GPIOx->EXTIISR, ((line & 0xffff) << 0x0U));
1237 }
1238
1239 /**
1240 * @brief Get EXTI input set status
1241 * @rmtoll EXTIDI FL_GPIO_GetEXTILine
1242 * @param GPIOx GPIO Port
1243 * @param line This parameter can be one of the following values:
1244 * @arg @ref FL_GPIO_EXTI_LINE_0
1245 * @arg @ref FL_GPIO_EXTI_LINE_1
1246 * @arg @ref FL_GPIO_EXTI_LINE_2
1247 * @arg @ref FL_GPIO_EXTI_LINE_3
1248 * @arg @ref FL_GPIO_EXTI_LINE_4
1249 * @arg @ref FL_GPIO_EXTI_LINE_5
1250 * @arg @ref FL_GPIO_EXTI_LINE_6
1251 * @arg @ref FL_GPIO_EXTI_LINE_7
1252 * @arg @ref FL_GPIO_EXTI_LINE_8
1253 * @arg @ref FL_GPIO_EXTI_LINE_9
1254 * @arg @ref FL_GPIO_EXTI_LINE_10
1255 * @arg @ref FL_GPIO_EXTI_LINE_11
1256 * @arg @ref FL_GPIO_EXTI_LINE_12
1257 * @arg @ref FL_GPIO_EXTI_LINE_13
1258 * @arg @ref FL_GPIO_EXTI_LINE_14
1259 * @arg @ref FL_GPIO_EXTI_LINE_15
1260 * @retval State of bit (1 or 0).
1261 */
FL_GPIO_GetEXTILine(GPIO_COMMON_Type * GPIOx,uint32_t line)1262 __STATIC_INLINE uint32_t FL_GPIO_GetEXTILine(GPIO_COMMON_Type *GPIOx, uint32_t line)
1263 {
1264 return (uint32_t)(READ_BIT(GPIOx->EXTIDI, ((line & 0xffff) << 0x0U)) == ((line & 0xffff) << 0x0U));
1265 }
1266
1267 /**
1268 * @brief Get EXTI input status
1269 * @rmtoll EXTIDI FL_GPIO_ReadEXTILines
1270 * @param GPIOx GPIO Port
1271 * @retval EXTI data register value of port
1272 */
FL_GPIO_ReadEXTILines(GPIO_COMMON_Type * GPIOx)1273 __STATIC_INLINE uint32_t FL_GPIO_ReadEXTILines(GPIO_COMMON_Type *GPIOx)
1274 {
1275 return (uint32_t)(READ_BIT(GPIOx->EXTIDI, 0xffffU) >> 0U);
1276 }
1277
1278 /**
1279 * @brief Set PD11 frequency output
1280 * @rmtoll FOUTSEL FOUT0 FL_GPIO_SetFOUT0
1281 * @param GPIOx GPIO Port
1282 * @param select This parameter can be one of the following values:
1283 * @arg @ref FL_GPIO_FOUT0_SELECT_XTLF
1284 * @arg @ref FL_GPIO_FOUT0_SELECT_LPOSC
1285 * @arg @ref FL_GPIO_FOUT0_SELECT_RCHF_DIV64
1286 * @arg @ref FL_GPIO_FOUT0_SELECT_LSCLK
1287 * @arg @ref FL_GPIO_FOUT0_SELECT_AHBCLK_DIV64
1288 * @arg @ref FL_GPIO_FOUT0_SELECT_RTCTM
1289 * @arg @ref FL_GPIO_FOUT0_SELECT_PLLOUTPUT_DIV64
1290 * @arg @ref FL_GPIO_FOUT0_SELECT_RTCCLK64Hz
1291 * @arg @ref FL_GPIO_FOUT0_SELECT_APB1CLK_DIV64
1292 * @arg @ref FL_GPIO_FOUT0_SELECT_PLLOUTPUT
1293 * @arg @ref FL_GPIO_FOUT0_SELECT_RCMF_PSC
1294 * @arg @ref FL_GPIO_FOUT0_SELECT_RCHF
1295 * @arg @ref FL_GPIO_FOUT0_SELECT_XTHF_DIV64
1296 * @arg @ref FL_GPIO_FOUT0_SELECT_COMP1_OUTPUT
1297 * @arg @ref FL_GPIO_FOUT0_SELECT_CLK_8K
1298 * @arg @ref FL_GPIO_FOUT0_SELECT_ADC_CLK
1299 * @retval None
1300 */
FL_GPIO_SetFOUT0(GPIO_COMMON_Type * GPIOx,uint32_t select)1301 __STATIC_INLINE void FL_GPIO_SetFOUT0(GPIO_COMMON_Type *GPIOx, uint32_t select)
1302 {
1303 MODIFY_REG(GPIOx->FOUTSEL, GPIO_FOUTSEL_FOUT0_Msk, select);
1304 }
1305
1306 /**
1307 * @brief Get PD11 frequency output
1308 * @rmtoll FOUTSEL FOUT0 FL_GPIO_GetFOUT0
1309 * @param GPIOx GPIO Port
1310 * @retval Returned value can be one of the following values:
1311 * @arg @ref FL_GPIO_FOUT0_SELECT_XTLF
1312 * @arg @ref FL_GPIO_FOUT0_SELECT_LPOSC
1313 * @arg @ref FL_GPIO_FOUT0_SELECT_RCHF_DIV64
1314 * @arg @ref FL_GPIO_FOUT0_SELECT_LSCLK
1315 * @arg @ref FL_GPIO_FOUT0_SELECT_AHBCLK_DIV64
1316 * @arg @ref FL_GPIO_FOUT0_SELECT_RTCTM
1317 * @arg @ref FL_GPIO_FOUT0_SELECT_PLLOUTPUT_DIV64
1318 * @arg @ref FL_GPIO_FOUT0_SELECT_RTCCLK64Hz
1319 * @arg @ref FL_GPIO_FOUT0_SELECT_APB1CLK_DIV64
1320 * @arg @ref FL_GPIO_FOUT0_SELECT_PLLOUTPUT
1321 * @arg @ref FL_GPIO_FOUT0_SELECT_RCMF_PSC
1322 * @arg @ref FL_GPIO_FOUT0_SELECT_RCHF
1323 * @arg @ref FL_GPIO_FOUT0_SELECT_XTHF_DIV64
1324 * @arg @ref FL_GPIO_FOUT0_SELECT_COMP1_OUTPUT
1325 * @arg @ref FL_GPIO_FOUT0_SELECT_CLK_8K
1326 * @arg @ref FL_GPIO_FOUT0_SELECT_ADC_CLK
1327 */
FL_GPIO_GetFOUT0(GPIO_COMMON_Type * GPIOx)1328 __STATIC_INLINE uint32_t FL_GPIO_GetFOUT0(GPIO_COMMON_Type *GPIOx)
1329 {
1330 return (uint32_t)(READ_BIT(GPIOx->FOUTSEL, GPIO_FOUTSEL_FOUT0_Msk));
1331 }
1332
1333 /**
1334 * @brief Set PB12 frequency output
1335 * @rmtoll FOUTSEL FOUT1 FL_GPIO_SetFOUT1
1336 * @param GPIOx GPIO Port
1337 * @param select This parameter can be one of the following values:
1338 * @arg @ref FL_GPIO_FOUT1_SELECT_XTLF
1339 * @arg @ref FL_GPIO_FOUT1_SELECT_LPOSC
1340 * @arg @ref FL_GPIO_FOUT1_SELECT_RCHF_DIV64
1341 * @arg @ref FL_GPIO_FOUT1_SELECT_LSCLK
1342 * @arg @ref FL_GPIO_FOUT1_SELECT_AHBCLK_DIV64
1343 * @arg @ref FL_GPIO_FOUT1_SELECT_RTCTM
1344 * @arg @ref FL_GPIO_FOUT1_SELECT_PLLOUTPUT_DIV64
1345 * @arg @ref FL_GPIO_FOUT1_SELECT_RTCCLK64Hz
1346 * @arg @ref FL_GPIO_FOUT1_SELECT_APB1CLK_DIV64
1347 * @arg @ref FL_GPIO_FOUT1_SELECT_PLLOUTPUT
1348 * @arg @ref FL_GPIO_FOUT1_SELECT_RCMF_PSC
1349 * @arg @ref FL_GPIO_FOUT1_SELECT_RCHF
1350 * @arg @ref FL_GPIO_FOUT1_SELECT_XTHF_DIV64
1351 * @arg @ref FL_GPIO_FOUT1_SELECT_ADCCLK_DIV64
1352 * @arg @ref FL_GPIO_FOUT1_SELECT_CLK_8K
1353 * @arg @ref FL_GPIO_FOUT1_SELECT_COMP2_OUTPUT
1354 * @retval None
1355 */
FL_GPIO_SetFOUT1(GPIO_COMMON_Type * GPIOx,uint32_t select)1356 __STATIC_INLINE void FL_GPIO_SetFOUT1(GPIO_COMMON_Type *GPIOx, uint32_t select)
1357 {
1358 MODIFY_REG(GPIOx->FOUTSEL, GPIO_FOUTSEL_FOUT1_Msk, select);
1359 }
1360
1361 /**
1362 * @brief Get PB12 frequency output
1363 * @rmtoll FOUTSEL FOUT1 FL_GPIO_GetFOUT1
1364 * @param GPIOx GPIO Port
1365 * @retval Returned value can be one of the following values:
1366 * @arg @ref FL_GPIO_FOUT1_SELECT_XTLF
1367 * @arg @ref FL_GPIO_FOUT1_SELECT_LPOSC
1368 * @arg @ref FL_GPIO_FOUT1_SELECT_RCHF_DIV64
1369 * @arg @ref FL_GPIO_FOUT1_SELECT_LSCLK
1370 * @arg @ref FL_GPIO_FOUT1_SELECT_AHBCLK_DIV64
1371 * @arg @ref FL_GPIO_FOUT1_SELECT_RTCTM
1372 * @arg @ref FL_GPIO_FOUT1_SELECT_PLLOUTPUT_DIV64
1373 * @arg @ref FL_GPIO_FOUT1_SELECT_RTCCLK64Hz
1374 * @arg @ref FL_GPIO_FOUT1_SELECT_APB1CLK_DIV64
1375 * @arg @ref FL_GPIO_FOUT1_SELECT_PLLOUTPUT
1376 * @arg @ref FL_GPIO_FOUT1_SELECT_RCMF_PSC
1377 * @arg @ref FL_GPIO_FOUT1_SELECT_RCHF
1378 * @arg @ref FL_GPIO_FOUT1_SELECT_XTHF_DIV64
1379 * @arg @ref FL_GPIO_FOUT1_SELECT_ADCCLK_DIV64
1380 * @arg @ref FL_GPIO_FOUT1_SELECT_CLK_8K
1381 * @arg @ref FL_GPIO_FOUT1_SELECT_COMP2_OUTPUT
1382 */
FL_GPIO_GetFOUT1(GPIO_COMMON_Type * GPIOx)1383 __STATIC_INLINE uint32_t FL_GPIO_GetFOUT1(GPIO_COMMON_Type *GPIOx)
1384 {
1385 return (uint32_t)(READ_BIT(GPIOx->FOUTSEL, GPIO_FOUTSEL_FOUT1_Msk));
1386 }
1387
1388 /**
1389 * @brief Set EXTI0 interrupt input
1390 * @rmtoll EXTISEL EXTI0 FL_GPIO_SetExtiLine0
1391 * @param GPIOx GPIO Port
1392 * @param EXTIPin This parameter can be one of the following values:
1393 * @arg @ref FL_GPIO_EXTI_LINE_0_PA0
1394 * @arg @ref FL_GPIO_EXTI_LINE_0_PA1
1395 * @arg @ref FL_GPIO_EXTI_LINE_0_PA2
1396 * @arg @ref FL_GPIO_EXTI_LINE_0_PA3
1397 * @retval None
1398 */
FL_GPIO_SetExtiLine0(GPIO_COMMON_Type * GPIOx,uint32_t EXTIPin)1399 __STATIC_INLINE void FL_GPIO_SetExtiLine0(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
1400 {
1401 MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI0_Msk, EXTIPin);
1402 }
1403
1404 /**
1405 * @brief Get EXTI0 interrupt input
1406 * @rmtoll EXTISEL EXTI0 FL_GPIO_GetExtiLine0
1407 * @param GPIOx GPIO Port
1408 * @retval Returned value can be one of the following values:
1409 */
FL_GPIO_GetExtiLine0(GPIO_COMMON_Type * GPIOx)1410 __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine0(GPIO_COMMON_Type *GPIOx)
1411 {
1412 return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI0_Msk));
1413 }
1414
1415 /**
1416 * @brief Set EXTI1 interrupt input
1417 * @rmtoll EXTISEL EXTI1 FL_GPIO_SetExtiLine1
1418 * @param GPIOx GPIO Port
1419 * @param EXTIPin This parameter can be one of the following values:
1420 * @arg @ref FL_GPIO_EXTI_LINE_1_PA4
1421 * @arg @ref FL_GPIO_EXTI_LINE_1_PA5
1422 * @arg @ref FL_GPIO_EXTI_LINE_1_PA6
1423 * @arg @ref FL_GPIO_EXTI_LINE_1_PA7
1424 * @retval None
1425 */
FL_GPIO_SetExtiLine1(GPIO_COMMON_Type * GPIOx,uint32_t EXTIPin)1426 __STATIC_INLINE void FL_GPIO_SetExtiLine1(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
1427 {
1428 MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI1_Msk, EXTIPin);
1429 }
1430
1431 /**
1432 * @brief Get EXTI1 interrupt input
1433 * @rmtoll EXTISEL EXTI1 FL_GPIO_GetExtiLine1
1434 * @param GPIOx GPIO Port
1435 * @retval Returned value can be one of the following values:
1436 */
FL_GPIO_GetExtiLine1(GPIO_COMMON_Type * GPIOx)1437 __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine1(GPIO_COMMON_Type *GPIOx)
1438 {
1439 return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI1_Msk));
1440 }
1441
1442 /**
1443 * @brief Set EXTI2 interrupt input
1444 * @rmtoll EXTISEL EXTI2 FL_GPIO_SetExtiLine2
1445 * @param GPIOx GPIO Port
1446 * @param EXTIPin This parameter can be one of the following values:
1447 * @arg @ref FL_GPIO_EXTI_LINE_2_PA8
1448 * @arg @ref FL_GPIO_EXTI_LINE_2_PA9
1449 * @arg @ref FL_GPIO_EXTI_LINE_2_PA10
1450 * @arg @ref FL_GPIO_EXTI_LINE_2_PA11
1451 * @retval None
1452 */
FL_GPIO_SetExtiLine2(GPIO_COMMON_Type * GPIOx,uint32_t EXTIPin)1453 __STATIC_INLINE void FL_GPIO_SetExtiLine2(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
1454 {
1455 MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI2_Msk, EXTIPin);
1456 }
1457
1458 /**
1459 * @brief Get EXTI2 interrupt input
1460 * @rmtoll EXTISEL EXTI2 FL_GPIO_GetExtiLine2
1461 * @param GPIOx GPIO Port
1462 * @retval Returned value can be one of the following values:
1463 */
FL_GPIO_GetExtiLine2(GPIO_COMMON_Type * GPIOx)1464 __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine2(GPIO_COMMON_Type *GPIOx)
1465 {
1466 return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI2_Msk));
1467 }
1468
1469 /**
1470 * @brief Set EXTI3 interrupt input
1471 * @rmtoll EXTISEL EXTI3 FL_GPIO_SetExtiLine3
1472 * @param GPIOx GPIO Port
1473 * @param EXTIPin This parameter can be one of the following values:
1474 * @arg @ref FL_GPIO_EXTI_LINE_3_PA12
1475 * @arg @ref FL_GPIO_EXTI_LINE_3_PA13
1476 * @arg @ref FL_GPIO_EXTI_LINE_3_PA14
1477 * @arg @ref FL_GPIO_EXTI_LINE_3_PA15
1478 * @retval None
1479 */
FL_GPIO_SetExtiLine3(GPIO_COMMON_Type * GPIOx,uint32_t EXTIPin)1480 __STATIC_INLINE void FL_GPIO_SetExtiLine3(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
1481 {
1482 MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI3_Msk, EXTIPin);
1483 }
1484
1485 /**
1486 * @brief Get EXTI3 interrupt input
1487 * @rmtoll EXTISEL EXTI3 FL_GPIO_GetExtiLine3
1488 * @param GPIOx GPIO Port
1489 * @retval Returned value can be one of the following values:
1490 */
FL_GPIO_GetExtiLine3(GPIO_COMMON_Type * GPIOx)1491 __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine3(GPIO_COMMON_Type *GPIOx)
1492 {
1493 return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI3_Msk));
1494 }
1495
1496 /**
1497 * @brief Set EXTI4 interrupt input
1498 * @rmtoll EXTISEL EXTI4 FL_GPIO_SetExtiLine4
1499 * @param GPIOx GPIO Port
1500 * @param EXTIPin This parameter can be one of the following values:
1501 * @arg @ref FL_GPIO_EXTI_LINE_4_PB0
1502 * @arg @ref FL_GPIO_EXTI_LINE_4_PB1
1503 * @arg @ref FL_GPIO_EXTI_LINE_4_PB2
1504 * @arg @ref FL_GPIO_EXTI_LINE_4_PB3
1505 * @retval None
1506 */
FL_GPIO_SetExtiLine4(GPIO_COMMON_Type * GPIOx,uint32_t EXTIPin)1507 __STATIC_INLINE void FL_GPIO_SetExtiLine4(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
1508 {
1509 MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI4_Msk, EXTIPin);
1510 }
1511
1512 /**
1513 * @brief Get EXTI4 interrupt input
1514 * @rmtoll EXTISEL EXTI4 FL_GPIO_GetExtiLine4
1515 * @param GPIOx GPIO Port
1516 * @retval Returned value can be one of the following values:
1517 */
FL_GPIO_GetExtiLine4(GPIO_COMMON_Type * GPIOx)1518 __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine4(GPIO_COMMON_Type *GPIOx)
1519 {
1520 return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI4_Msk));
1521 }
1522
1523 /**
1524 * @brief Set EXTI5 interrupt input
1525 * @rmtoll EXTISEL EXTI5 FL_GPIO_SetExtiLine5
1526 * @param GPIOx GPIO Port
1527 * @param EXTIPin This parameter can be one of the following values:
1528 * @arg @ref FL_GPIO_EXTI_LINE_5_PB4
1529 * @arg @ref FL_GPIO_EXTI_LINE_5_PB5
1530 * @arg @ref FL_GPIO_EXTI_LINE_5_PB6
1531 * @arg @ref FL_GPIO_EXTI_LINE_5_PB7
1532 * @retval None
1533 */
FL_GPIO_SetExtiLine5(GPIO_COMMON_Type * GPIOx,uint32_t EXTIPin)1534 __STATIC_INLINE void FL_GPIO_SetExtiLine5(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
1535 {
1536 MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI5_Msk, EXTIPin);
1537 }
1538
1539 /**
1540 * @brief Get EXTI5 interrupt input
1541 * @rmtoll EXTISEL EXTI5 FL_GPIO_GetExtiLine5
1542 * @param GPIOx GPIO Port
1543 * @retval Returned value can be one of the following values:
1544 */
FL_GPIO_GetExtiLine5(GPIO_COMMON_Type * GPIOx)1545 __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine5(GPIO_COMMON_Type *GPIOx)
1546 {
1547 return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI5_Msk));
1548 }
1549
1550 /**
1551 * @brief Set EXTI6 interrupt input
1552 * @rmtoll EXTISEL EXTI6 FL_GPIO_SetExtiLine6
1553 * @param GPIOx GPIO Port
1554 * @param EXTIPin This parameter can be one of the following values:
1555 * @arg @ref FL_GPIO_EXTI_LINE_6_PB8
1556 * @arg @ref FL_GPIO_EXTI_LINE_6_PB9
1557 * @arg @ref FL_GPIO_EXTI_LINE_6_PB10
1558 * @arg @ref FL_GPIO_EXTI_LINE_6_PB11
1559 * @retval None
1560 */
FL_GPIO_SetExtiLine6(GPIO_COMMON_Type * GPIOx,uint32_t EXTIPin)1561 __STATIC_INLINE void FL_GPIO_SetExtiLine6(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
1562 {
1563 MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI6_Msk, EXTIPin);
1564 }
1565
1566 /**
1567 * @brief Get EXTI6 interrupt input
1568 * @rmtoll EXTISEL EXTI6 FL_GPIO_GetExtiLine6
1569 * @param GPIOx GPIO Port
1570 * @retval Returned value can be one of the following values:
1571 */
FL_GPIO_GetExtiLine6(GPIO_COMMON_Type * GPIOx)1572 __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine6(GPIO_COMMON_Type *GPIOx)
1573 {
1574 return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI6_Msk));
1575 }
1576
1577 /**
1578 * @brief Set EXTI7 interrupt input
1579 * @rmtoll EXTISEL EXTI7 FL_GPIO_SetExtiLine7
1580 * @param GPIOx GPIO Port
1581 * @param EXTIPin This parameter can be one of the following values:
1582 * @arg @ref FL_GPIO_EXTI_LINE_7_PB12
1583 * @arg @ref FL_GPIO_EXTI_LINE_7_PB13
1584 * @arg @ref FL_GPIO_EXTI_LINE_7_PB14
1585 * @arg @ref FL_GPIO_EXTI_LINE_7_PB15
1586 * @retval None
1587 */
FL_GPIO_SetExtiLine7(GPIO_COMMON_Type * GPIOx,uint32_t EXTIPin)1588 __STATIC_INLINE void FL_GPIO_SetExtiLine7(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
1589 {
1590 MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI7_Msk, EXTIPin);
1591 }
1592
1593 /**
1594 * @brief Get EXTI7 interrupt input
1595 * @rmtoll EXTISEL EXTI7 FL_GPIO_GetExtiLine7
1596 * @param GPIOx GPIO Port
1597 * @retval Returned value can be one of the following values:
1598 */
FL_GPIO_GetExtiLine7(GPIO_COMMON_Type * GPIOx)1599 __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine7(GPIO_COMMON_Type *GPIOx)
1600 {
1601 return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI7_Msk));
1602 }
1603
1604 /**
1605 * @brief Set EXTI8 interrupt input
1606 * @rmtoll EXTISEL EXTI8 FL_GPIO_SetExtiLine8
1607 * @param GPIOx GPIO Port
1608 * @param EXTIPin This parameter can be one of the following values:
1609 * @arg @ref FL_GPIO_EXTI_LINE_8_PC0
1610 * @arg @ref FL_GPIO_EXTI_LINE_8_PC1
1611 * @arg @ref FL_GPIO_EXTI_LINE_8_PC2
1612 * @arg @ref FL_GPIO_EXTI_LINE_8_PC3
1613 * @retval None
1614 */
FL_GPIO_SetExtiLine8(GPIO_COMMON_Type * GPIOx,uint32_t EXTIPin)1615 __STATIC_INLINE void FL_GPIO_SetExtiLine8(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
1616 {
1617 MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI8_Msk, EXTIPin);
1618 }
1619
1620 /**
1621 * @brief Get EXTI8 interrupt input
1622 * @rmtoll EXTISEL EXTI8 FL_GPIO_GetExtiLine8
1623 * @param GPIOx GPIO Port
1624 * @retval Returned value can be one of the following values:
1625 */
FL_GPIO_GetExtiLine8(GPIO_COMMON_Type * GPIOx)1626 __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine8(GPIO_COMMON_Type *GPIOx)
1627 {
1628 return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI8_Msk));
1629 }
1630
1631 /**
1632 * @brief Set EXTI9 interrupt input
1633 * @rmtoll EXTISEL EXTI9 FL_GPIO_SetExtiLine9
1634 * @param GPIOx GPIO Port
1635 * @param EXTIPin This parameter can be one of the following values:
1636 * @arg @ref FL_GPIO_EXTI_LINE_9_PC4
1637 * @arg @ref FL_GPIO_EXTI_LINE_9_PC5
1638 * @arg @ref FL_GPIO_EXTI_LINE_9_PC6
1639 * @arg @ref FL_GPIO_EXTI_LINE_9_PC7
1640 * @retval None
1641 */
FL_GPIO_SetExtiLine9(GPIO_COMMON_Type * GPIOx,uint32_t EXTIPin)1642 __STATIC_INLINE void FL_GPIO_SetExtiLine9(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
1643 {
1644 MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI9_Msk, EXTIPin);
1645 }
1646
1647 /**
1648 * @brief Get EXTI9 interrupt input
1649 * @rmtoll EXTISEL EXTI9 FL_GPIO_GetExtiLine9
1650 * @param GPIOx GPIO Port
1651 * @retval Returned value can be one of the following values:
1652 */
FL_GPIO_GetExtiLine9(GPIO_COMMON_Type * GPIOx)1653 __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine9(GPIO_COMMON_Type *GPIOx)
1654 {
1655 return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI9_Msk));
1656 }
1657
1658 /**
1659 * @brief Set EXTI10 interrupt input
1660 * @rmtoll EXTISEL EXTI10 FL_GPIO_SetExtiLine10
1661 * @param GPIOx GPIO Port
1662 * @param EXTIPin This parameter can be one of the following values:
1663 * @arg @ref FL_GPIO_EXTI_LINE_10_PC8
1664 * @arg @ref FL_GPIO_EXTI_LINE_10_PC9
1665 * @arg @ref FL_GPIO_EXTI_LINE_10_PC10
1666 * @arg @ref FL_GPIO_EXTI_LINE_10_PC11
1667 * @retval None
1668 */
FL_GPIO_SetExtiLine10(GPIO_COMMON_Type * GPIOx,uint32_t EXTIPin)1669 __STATIC_INLINE void FL_GPIO_SetExtiLine10(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
1670 {
1671 MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI10_Msk, EXTIPin);
1672 }
1673
1674 /**
1675 * @brief Get EXTI10 interrupt input
1676 * @rmtoll EXTISEL EXTI10 FL_GPIO_GetExtiLine10
1677 * @param GPIOx GPIO Port
1678 * @retval Returned value can be one of the following values:
1679 */
FL_GPIO_GetExtiLine10(GPIO_COMMON_Type * GPIOx)1680 __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine10(GPIO_COMMON_Type *GPIOx)
1681 {
1682 return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI10_Msk));
1683 }
1684
1685 /**
1686 * @brief Set EXTI11 interrupt input
1687 * @rmtoll EXTISEL EXTI11 FL_GPIO_SetExtiLine11
1688 * @param GPIOx GPIO Port
1689 * @param EXTIPin This parameter can be one of the following values:
1690 * @arg @ref FL_GPIO_PIN_0
1691 * @retval None
1692 */
FL_GPIO_SetExtiLine11(GPIO_COMMON_Type * GPIOx,uint32_t EXTIPin)1693 __STATIC_INLINE void FL_GPIO_SetExtiLine11(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
1694 {
1695 MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI11_Msk, EXTIPin);
1696 }
1697
1698 /**
1699 * @brief Get EXTI11 interrupt input
1700 * @rmtoll EXTISEL EXTI11 FL_GPIO_GetExtiLine11
1701 * @param GPIOx GPIO Port
1702 * @retval Returned value can be one of the following values:
1703 */
FL_GPIO_GetExtiLine11(GPIO_COMMON_Type * GPIOx)1704 __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine11(GPIO_COMMON_Type *GPIOx)
1705 {
1706 return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI11_Msk));
1707 }
1708
1709 /**
1710 * @brief Set EXTI12 interrupt input
1711 * @rmtoll EXTISEL EXTI12 FL_GPIO_SetExtiLine12
1712 * @param GPIOx GPIO Port
1713 * @param EXTIPin This parameter can be one of the following values:
1714 * @arg @ref FL_GPIO_EXTI_LINE_12_PD0
1715 * @arg @ref FL_GPIO_EXTI_LINE_12_PD1
1716 * @arg @ref FL_GPIO_EXTI_LINE_12_PD2
1717 * @arg @ref FL_GPIO_EXTI_LINE_12_PD3
1718 * @retval None
1719 */
FL_GPIO_SetExtiLine12(GPIO_COMMON_Type * GPIOx,uint32_t EXTIPin)1720 __STATIC_INLINE void FL_GPIO_SetExtiLine12(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
1721 {
1722 MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI12_Msk, EXTIPin);
1723 }
1724
1725 /**
1726 * @brief Get EXTI12 interrupt input
1727 * @rmtoll EXTISEL EXTI12 FL_GPIO_GetExtiLine12
1728 * @param GPIOx GPIO Port
1729 * @retval Returned value can be one of the following values:
1730 */
FL_GPIO_GetExtiLine12(GPIO_COMMON_Type * GPIOx)1731 __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine12(GPIO_COMMON_Type *GPIOx)
1732 {
1733 return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI12_Msk));
1734 }
1735
1736 /**
1737 * @brief Set EXTI13 interrupt input
1738 * @rmtoll EXTISEL EXTI13 FL_GPIO_SetExtiLine13
1739 * @param GPIOx GPIO Port
1740 * @param EXTIPin This parameter can be one of the following values:
1741 * @arg @ref FL_GPIO_EXTI_LINE_13_PD4
1742 * @arg @ref FL_GPIO_EXTI_LINE_13_PD5
1743 * @arg @ref FL_GPIO_EXTI_LINE_13_PD6
1744 * @arg @ref FL_GPIO_EXTI_LINE_13_PD7
1745 * @retval None
1746 */
FL_GPIO_SetExtiLine13(GPIO_COMMON_Type * GPIOx,uint32_t EXTIPin)1747 __STATIC_INLINE void FL_GPIO_SetExtiLine13(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
1748 {
1749 MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI13_Msk, EXTIPin);
1750 }
1751
1752 /**
1753 * @brief Get EXTI13 interrupt input
1754 * @rmtoll EXTISEL EXTI13 FL_GPIO_GetExtiLine13
1755 * @param GPIOx GPIO Port
1756 * @retval Returned value can be one of the following values:
1757 */
FL_GPIO_GetExtiLine13(GPIO_COMMON_Type * GPIOx)1758 __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine13(GPIO_COMMON_Type *GPIOx)
1759 {
1760 return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI13_Msk));
1761 }
1762
1763 /**
1764 * @brief Set EXTI14 interrupt input
1765 * @rmtoll EXTISEL EXTI14 FL_GPIO_SetExtiLine14
1766 * @param GPIOx GPIO Port
1767 * @param EXTIPin This parameter can be one of the following values:
1768 * @arg @ref FL_GPIO_EXTI_LINE_14_PD8
1769 * @arg @ref FL_GPIO_EXTI_LINE_14_PD9
1770 * @arg @ref FL_GPIO_EXTI_LINE_14_PD10
1771 * @arg @ref FL_GPIO_EXTI_LINE_14_PD11
1772 * @retval None
1773 */
FL_GPIO_SetExtiLine14(GPIO_COMMON_Type * GPIOx,uint32_t EXTIPin)1774 __STATIC_INLINE void FL_GPIO_SetExtiLine14(GPIO_COMMON_Type *GPIOx, uint32_t EXTIPin)
1775 {
1776 MODIFY_REG(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI14_Msk, EXTIPin);
1777 }
1778
1779 /**
1780 * @brief Get EXTI14 interrupt input
1781 * @rmtoll EXTISEL EXTI14 FL_GPIO_GetExtiLine14
1782 * @param GPIOx GPIO Port
1783 * @retval Returned value can be one of the following values:
1784 */
FL_GPIO_GetExtiLine14(GPIO_COMMON_Type * GPIOx)1785 __STATIC_INLINE uint32_t FL_GPIO_GetExtiLine14(GPIO_COMMON_Type *GPIOx)
1786 {
1787 return (uint32_t)(READ_BIT(GPIOx->EXTISEL, GPIO_EXTISEL_EXTI14_Msk));
1788 }
1789
1790 /**
1791 * @brief Get WKUP enable status
1792 * @rmtoll PINWKEN EN FL_GPIO_IsEnabledWakeup
1793 * @param GPIOx GPIO Port
1794 * @param wakeup This parameter can be one of the following values:
1795 * @arg @ref FL_GPIO_WAKEUP_0
1796 * @arg @ref FL_GPIO_WAKEUP_1
1797 * @arg @ref FL_GPIO_WAKEUP_2
1798 * @arg @ref FL_GPIO_WAKEUP_3
1799 * @arg @ref FL_GPIO_WAKEUP_4
1800 * @arg @ref FL_GPIO_WAKEUP_5
1801 * @arg @ref FL_GPIO_WAKEUP_6
1802 * @arg @ref FL_GPIO_WAKEUP_7
1803 * @retval State of bit (1 or 0).
1804 */
FL_GPIO_IsEnabledWakeup(GPIO_COMMON_Type * GPIOx,uint32_t wakeup)1805 __STATIC_INLINE uint32_t FL_GPIO_IsEnabledWakeup(GPIO_COMMON_Type *GPIOx, uint32_t wakeup)
1806 {
1807 return (uint32_t)(READ_BIT(GPIOx->PINWKEN, ((wakeup & 0xff) << 0x0U)) == ((wakeup & 0xff) << 0x0U));
1808 }
1809
1810 /**
1811 * @brief WKUP enable
1812 * @rmtoll PINWKEN EN FL_GPIO_EnableWakeup
1813 * @param GPIOx GPIO Port
1814 * @param wakeup This parameter can be one of the following values:
1815 * @arg @ref FL_GPIO_WAKEUP_0
1816 * @arg @ref FL_GPIO_WAKEUP_1
1817 * @arg @ref FL_GPIO_WAKEUP_2
1818 * @arg @ref FL_GPIO_WAKEUP_3
1819 * @arg @ref FL_GPIO_WAKEUP_4
1820 * @arg @ref FL_GPIO_WAKEUP_5
1821 * @arg @ref FL_GPIO_WAKEUP_6
1822 * @arg @ref FL_GPIO_WAKEUP_7
1823 * @retval None
1824 */
FL_GPIO_EnableWakeup(GPIO_COMMON_Type * GPIOx,uint32_t wakeup)1825 __STATIC_INLINE void FL_GPIO_EnableWakeup(GPIO_COMMON_Type *GPIOx, uint32_t wakeup)
1826 {
1827 SET_BIT(GPIOx->PINWKEN, ((wakeup & 0xff) << 0x0U));
1828 }
1829
1830 /**
1831 * @brief WKUP disable
1832 * @rmtoll PINWKEN EN FL_GPIO_DisableWakeup
1833 * @param GPIOx GPIO Port
1834 * @param wakeup This parameter can be one of the following values:
1835 * @arg @ref FL_GPIO_WAKEUP_0
1836 * @arg @ref FL_GPIO_WAKEUP_1
1837 * @arg @ref FL_GPIO_WAKEUP_2
1838 * @arg @ref FL_GPIO_WAKEUP_3
1839 * @arg @ref FL_GPIO_WAKEUP_4
1840 * @arg @ref FL_GPIO_WAKEUP_5
1841 * @arg @ref FL_GPIO_WAKEUP_6
1842 * @arg @ref FL_GPIO_WAKEUP_7
1843 * @retval None
1844 */
FL_GPIO_DisableWakeup(GPIO_COMMON_Type * GPIOx,uint32_t wakeup)1845 __STATIC_INLINE void FL_GPIO_DisableWakeup(GPIO_COMMON_Type *GPIOx, uint32_t wakeup)
1846 {
1847 CLEAR_BIT(GPIOx->PINWKEN, ((wakeup & 0xff) << 0x0U));
1848 }
1849
1850 /**
1851 * @brief Get WKUP interrupt entry
1852 * @rmtoll PINWKEN WKISEL FL_GPIO_GetWakeupInterruptEntry
1853 * @param GPIOx GPIO Port
1854 * @retval Returned value can be one of the following values:
1855 * @arg @ref FL_GPIO_WAKEUP_INT_ENTRY_NMI
1856 * @arg @ref FL_GPIO_WAKEUP_INT_ENTRY_38
1857 */
FL_GPIO_GetWakeupInterruptEntry(GPIO_COMMON_Type * GPIOx)1858 __STATIC_INLINE uint32_t FL_GPIO_GetWakeupInterruptEntry(GPIO_COMMON_Type *GPIOx)
1859 {
1860 return (uint32_t)(READ_BIT(GPIOx->PINWKEN, GPIO_PINWKEN_WKISEL_Msk));
1861 }
1862
1863 /**
1864 * @brief Set wkup interrupt entry
1865 * @rmtoll PINWKEN WKISEL FL_GPIO_SetWakeupInterruptEntry
1866 * @param GPIOx GPIO Port
1867 * @param wakeup This parameter can be one of the following values:
1868 * @arg @ref FL_GPIO_WAKEUP_INT_ENTRY_NMI
1869 * @arg @ref FL_GPIO_WAKEUP_INT_ENTRY_38
1870 * @retval None
1871 */
FL_GPIO_SetWakeupInterruptEntry(GPIO_COMMON_Type * GPIOx,uint32_t wakeup)1872 __STATIC_INLINE void FL_GPIO_SetWakeupInterruptEntry(GPIO_COMMON_Type *GPIOx, uint32_t wakeup)
1873 {
1874 MODIFY_REG(GPIOx->PINWKEN, GPIO_PINWKEN_WKISEL_Msk, wakeup);
1875 }
1876
1877 /**
1878 * @brief Set WKUP edge polarity
1879 * @rmtoll PINWKEN SEL FL_GPIO_SetWakeupEdge
1880 * @param GPIOx GPIO Port
1881 * @param wakeup This parameter can be one of the following values:
1882 * @arg @ref FL_GPIO_WAKEUP_0
1883 * @arg @ref FL_GPIO_WAKEUP_1
1884 * @arg @ref FL_GPIO_WAKEUP_2
1885 * @arg @ref FL_GPIO_WAKEUP_3
1886 * @arg @ref FL_GPIO_WAKEUP_4
1887 * @arg @ref FL_GPIO_WAKEUP_5
1888 * @arg @ref FL_GPIO_WAKEUP_6
1889 * @arg @ref FL_GPIO_WAKEUP_7
1890 * @param mode This parameter can be one of the following values:
1891 * @arg @ref FL_GPIO_WAKEUP_TRIGGER_RISING
1892 * @arg @ref FL_GPIO_WAKEUP_TRIGGER_FALLING
1893 * @retval None
1894 */
FL_GPIO_SetWakeupEdge(GPIO_COMMON_Type * GPIOx,uint32_t wakeup,uint32_t mode)1895 __STATIC_INLINE void FL_GPIO_SetWakeupEdge(GPIO_COMMON_Type *GPIOx, uint32_t wakeup, uint32_t mode)
1896 {
1897 MODIFY_REG(GPIOx->PINWKEN, (wakeup << GPIO_PINWKEN_SEL_Pos), (wakeup * mode));
1898 }
1899
1900 /**
1901 * @brief Get WKUP edge polarity
1902 * @rmtoll PINWKEN SEL FL_GPIO_GetWakeupEdge
1903 * @param GPIOx GPIO Port
1904 * @param wakeup This parameter can be one of the following values:
1905 * @arg @ref FL_GPIO_WAKEUP_0
1906 * @arg @ref FL_GPIO_WAKEUP_1
1907 * @arg @ref FL_GPIO_WAKEUP_2
1908 * @arg @ref FL_GPIO_WAKEUP_3
1909 * @arg @ref FL_GPIO_WAKEUP_4
1910 * @arg @ref FL_GPIO_WAKEUP_5
1911 * @arg @ref FL_GPIO_WAKEUP_6
1912 * @arg @ref FL_GPIO_WAKEUP_7
1913 * @retval Returned value can be one of the following values:
1914 * @arg @ref FL_GPIO_WAKEUP_TRIGGER_RISING
1915 * @arg @ref FL_GPIO_WAKEUP_TRIGGER_FALLING
1916 */
FL_GPIO_GetWakeupEdge(GPIO_COMMON_Type * GPIOx,uint32_t wakeup)1917 __STATIC_INLINE uint32_t FL_GPIO_GetWakeupEdge(GPIO_COMMON_Type *GPIOx, uint32_t wakeup)
1918 {
1919 return (uint32_t)(READ_BIT(GPIOx->PINWKEN, (wakeup << GPIO_PINWKEN_SEL_Pos)) / wakeup);
1920 }
1921
1922 /**
1923 * @}
1924 */
1925
1926 /** @defgroup GPIO_FL_EF_Init Initialization and de-initialization functions
1927 * @{
1928 */
1929
1930 FL_ErrorStatus FL_GPIO_Init(GPIO_Type *GPIOx, FL_GPIO_InitTypeDef *initStruct);
1931 FL_ErrorStatus FL_GPIO_DeInit(GPIO_Type *GPIOx, uint32_t pin);
1932 void FL_GPIO_StructInit(FL_GPIO_InitTypeDef *initStruct);
1933 FL_ErrorStatus FL_WKUP_Init(FL_WKUP_InitTypeDef *initStruct, uint32_t wakeup);
1934 FL_ErrorStatus FL_WKUP_DeInit(uint32_t wakeup);
1935 void FL_WKUP_StructInit(FL_WKUP_InitTypeDef *initStruct);
1936
1937 /**
1938 * @}
1939 */
1940
1941 /** @defgroup RNG_FL_EF_Operation Opeartion functions
1942 * @{
1943 */
1944
1945 void FL_GPIO_ALLPIN_LPM_MODE(void);
1946
1947 /**
1948 * @}
1949 */
1950
1951 /**
1952 * @}
1953 */
1954
1955 /**
1956 * @}
1957 */
1958
1959 #ifdef __cplusplus
1960 }
1961 #endif
1962
1963 #endif /* __FM33LC0XX_FL_GPIO_H*/
1964
1965 /*************************Py_Code_Generator Version: 0.1-0.14-0.2 @ 2021-08-19*************************/
1966 /********************** (C) COPYRIGHT Fudan Microelectronics **** END OF FILE ***********************/
1967