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