1 /*********************************************************************************************************//**
2 * @file ht32f5xxxx_exti.c
3 * @version $Rev:: 6745 $
4 * @date $Date:: 2023-02-23 #$
5 * @brief This file provides all the EXTI firmware functions.
6 *************************************************************************************************************
7 * @attention
8 *
9 * Firmware Disclaimer Information
10 *
11 * 1. The customer hereby acknowledges and agrees that the program technical documentation, including the
12 * code, which is supplied by Holtek Semiconductor Inc., (hereinafter referred to as "HOLTEK") is the
13 * proprietary and confidential intellectual property of HOLTEK, and is protected by copyright law and
14 * other intellectual property laws.
15 *
16 * 2. The customer hereby acknowledges and agrees that the program technical documentation, including the
17 * code, is confidential information belonging to HOLTEK, and must not be disclosed to any third parties
18 * other than HOLTEK and the customer.
19 *
20 * 3. The program technical documentation, including the code, is provided "as is" and for customer reference
21 * only. After delivery by HOLTEK, the customer shall use the program technical documentation, including
22 * the code, at their own risk. HOLTEK disclaims any expressed, implied or statutory warranties, including
23 * the warranties of merchantability, satisfactory quality and fitness for a particular purpose.
24 *
25 * <h2><center>Copyright (C) Holtek Semiconductor Inc. All rights reserved</center></h2>
26 ************************************************************************************************************/
27
28 /* Includes ------------------------------------------------------------------------------------------------*/
29 #include "ht32f5xxxx_exti.h"
30
31 /** @addtogroup HT32F5xxxx_Peripheral_Driver HT32F5xxxx Peripheral Driver
32 * @{
33 */
34
35 /** @defgroup EXTI EXTI
36 * @brief EXTI driver modules
37 * @{
38 */
39
40
41 /* Private constants ---------------------------------------------------------------------------------------*/
42 /** @defgroup EXTI_Private_Define EXTI private definitions
43 * @{
44 */
45 /* EXTI EVWUPIEN mask */
46 #define WAKUPCR_EVWUPIEN_SET ((u32)0x80000000)
47 #define WAKUPCR_EVWUPIEN_RESET ((u32)0x7FFFFFFF)
48
49 #if (LIBCFG_EXTI_8CH)
50 const IRQn_Type gEXTIn_IRQn[16] = {
51 EXTI0_IRQn, EXTI1_IRQn, EXTI2_IRQn, EXTI3_IRQn,
52 EXTI4_IRQn, EXTI5_IRQn, EXTI6_IRQn, EXTI7_IRQn,
53 EXTI0_IRQn, EXTI1_IRQn, EXTI2_IRQn, EXTI3_IRQn,
54 EXTI4_IRQn, EXTI5_IRQn, EXTI6_IRQn, EXTI7_IRQn,
55 };
56 #else
57 const IRQn_Type gEXTIn_IRQn[16] = {
58 EXTI0_IRQn, EXTI1_IRQn, EXTI2_IRQn, EXTI3_IRQn,
59 EXTI4_IRQn, EXTI5_IRQn, EXTI6_IRQn, EXTI7_IRQn,
60 EXTI8_IRQn, EXTI9_IRQn, EXTI10_IRQn, EXTI11_IRQn,
61 EXTI12_IRQn, EXTI13_IRQn, EXTI14_IRQn, EXTI15_IRQn,
62 };
63 #endif
64 /**
65 * @}
66 */
67
68 /* Global functions ----------------------------------------------------------------------------------------*/
69 /** @defgroup EXTI_Exported_Functions EXTI exported functions
70 * @{
71 */
72 /*********************************************************************************************************//**
73 * @brief Deinitialize the EXTI peripheral registers.
74 * @param EXTI_Channel: can be 0, 1 to 15 to select the EXTI Channel.
75 * This parameter can be one of the following values:
76 * @arg EXTI_CHANNEL_0
77 * @arg EXTI_CHANNEL_1
78 * @arg EXTI_CHANNEL_2
79 * @arg EXTI_CHANNEL_3
80 * @arg EXTI_CHANNEL_4
81 * @arg EXTI_CHANNEL_5
82 * @arg EXTI_CHANNEL_6
83 * @arg EXTI_CHANNEL_7
84 * @arg EXTI_CHANNEL_8
85 * @arg EXTI_CHANNEL_9
86 * @arg EXTI_CHANNEL_10
87 * @arg EXTI_CHANNEL_11
88 * @arg EXTI_CHANNEL_12
89 * @arg EXTI_CHANNEL_13
90 * @arg EXTI_CHANNEL_14
91 * @arg EXTI_CHANNEL_15
92 * @retval None
93 ************************************************************************************************************/
EXTI_DeInit(u32 EXTI_Channel)94 void EXTI_DeInit(u32 EXTI_Channel)
95 {
96 u32 tmp;
97
98 /* Check the parameters */
99 Assert_Param(IS_EXTI_CHANNEL(EXTI_Channel));
100
101 tmp = 1 << EXTI_Channel;
102
103 *((u32 *) HT_EXTI + EXTI_Channel) = 0x0;
104 HT_EXTI->CR &= (~tmp);
105 HT_EXTI->EDGEFLGR = tmp;
106 HT_EXTI->EDGESR = tmp;
107 HT_EXTI->SSCR &= (~tmp);
108 HT_EXTI->WAKUPCR &= (~tmp);
109 HT_EXTI->WAKUPPOLR &= (~tmp);
110 HT_EXTI->WAKUPFLG = tmp;
111 }
112
113 /*********************************************************************************************************//**
114 * @brief Initialize the EXTI peripheral.
115 * @param EXTI_InitStruct: pointer to a EXTI_InitTypeDef structure.
116 * @retval None
117 ************************************************************************************************************/
EXTI_Init(EXTI_InitTypeDef * EXTI_InitStruct)118 void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)
119 {
120 u32 regval;
121
122 /* Check the parameters */
123 Assert_Param(IS_EXTI_CHANNEL(EXTI_InitStruct->EXTI_Channel));
124 Assert_Param(IS_EXTI_DEBOUNCE_TYPE(EXTI_InitStruct->EXTI_Debounce));
125 Assert_Param(IS_EXTI_DEBOUNCE_SIZE(EXTI_InitStruct->EXTI_DebounceCnt));
126 Assert_Param(IS_EXTI_INT_TYPE(EXTI_InitStruct->EXTI_IntType));
127
128 /* Set EXTI interrupt configuration */
129 regval = (EXTI_InitStruct->EXTI_Debounce << 31) | (EXTI_InitStruct->EXTI_IntType << 28) | (EXTI_InitStruct->EXTI_DebounceCnt);
130 *((u32 *) HT_EXTI + EXTI_InitStruct->EXTI_Channel) = regval;
131 }
132
133 /*********************************************************************************************************//**
134 * @brief Enable or Disable the specified EXTI channelx interrupts.
135 * @param EXTI_Channel: specify the EXTI channel.
136 * This parameter can be one of the following values:
137 * @arg EXTI_CHANNEL_0
138 * @arg EXTI_CHANNEL_1
139 * @arg EXTI_CHANNEL_2
140 * @arg EXTI_CHANNEL_3
141 * @arg EXTI_CHANNEL_4
142 * @arg EXTI_CHANNEL_5
143 * @arg EXTI_CHANNEL_6
144 * @arg EXTI_CHANNEL_7
145 * @arg EXTI_CHANNEL_8
146 * @arg EXTI_CHANNEL_9
147 * @arg EXTI_CHANNEL_10
148 * @arg EXTI_CHANNEL_11
149 * @arg EXTI_CHANNEL_12
150 * @arg EXTI_CHANNEL_13
151 * @arg EXTI_CHANNEL_14
152 * @arg EXTI_CHANNEL_15
153 * @param NewState: This parameter can be ENABLE or DISABLE.
154 * @retval None
155 ************************************************************************************************************/
EXTI_IntConfig(u32 EXTI_Channel,ControlStatus NewState)156 void EXTI_IntConfig(u32 EXTI_Channel, ControlStatus NewState)
157 {
158 /* Check the parameters */
159 Assert_Param(IS_EXTI_CHANNEL(EXTI_Channel));
160 Assert_Param(IS_CONTROL_STATUS(NewState));
161
162 /* Configure EXTI interrupt */
163 if (NewState == ENABLE)
164 {
165 HT_EXTI->CR |= (1 << EXTI_Channel);
166 }
167 else
168 {
169 HT_EXTI->CR &= ~(1 << EXTI_Channel);
170 }
171 }
172
173 #if (LIBCFG_EXTI_DEBCNTPRE)
174 /*********************************************************************************************************//**
175 * @brief Configure the Debounce Counter prescaler.
176 * @param EXTI_DebCntPre_DIVn: specify the prescaler value.
177 * This parameter can be one of the following values:
178 * @arg EXTI_DBCNTPRE_DIV1 : CK_DBCNT = EXTI_PCLK / 1
179 * @arg EXTI_DBCNTPRE_DIV2 : CK_DBCNT = EXTI_PCLK / 2
180 * @arg EXTI_DBCNTPRE_DIV4 : CK_DBCNT = EXTI_PCLK / 4
181 * @arg EXTI_DBCNTPRE_DIV8 : CK_DBCNT = EXTI_PCLK / 8
182 * @arg EXTI_DBCNTPRE_DIV16 : CK_DBCNT = EXTI_PCLK / 16
183 * @arg EXTI_DBCNTPRE_DIV32 : CK_DBCNT = EXTI_PCLK / 32
184 * @arg EXTI_DBCNTPRE_DIV64 : CK_DBCNT = EXTI_PCLK / 64
185 * @arg EXTI_DBCNTPRE_DIV128 : CK_DBCNT = EXTI_PCLK / 128
186 * @retval None
187 ************************************************************************************************************/
EXTI_SetDebounceCounterPrescaler(EXTI_DebCntPre_TypeDef EXTI_DBCNTPRE_DIVn)188 void EXTI_SetDebounceCounterPrescaler(EXTI_DebCntPre_TypeDef EXTI_DBCNTPRE_DIVn)
189 {
190 /* Check the parameters */
191 Assert_Param(IS_EXTI_DEBOUNCE_COUNTER_PRESCALER(EXTI_DBCNTPRE_DIVn));
192
193 HT_EXTI->CFGR0 = ((HT_EXTI->CFGR0 & 0xF8FFFFFF) | (EXTI_DBCNTPRE_DIVn << 24));
194 }
195 #endif
196
197 /*********************************************************************************************************//**
198 * @brief Configure the EXTI channelx event wakeup function.
199 * @param EXTI_Channel: specify the EXTI channel.
200 * This parameter can be one of the following values:
201 * @arg EXTI_CHANNEL_0
202 * @arg EXTI_CHANNEL_1
203 * @arg EXTI_CHANNEL_2
204 * @arg EXTI_CHANNEL_3
205 * @arg EXTI_CHANNEL_4
206 * @arg EXTI_CHANNEL_5
207 * @arg EXTI_CHANNEL_6
208 * @arg EXTI_CHANNEL_7
209 * @arg EXTI_CHANNEL_8
210 * @arg EXTI_CHANNEL_9
211 * @arg EXTI_CHANNEL_10
212 * @arg EXTI_CHANNEL_11
213 * @arg EXTI_CHANNEL_12
214 * @arg EXTI_CHANNEL_13
215 * @arg EXTI_CHANNEL_14
216 * @arg EXTI_CHANNEL_15
217 * @param EXTI_WakeUpType: determines the type of signal to trigger EXTI interrupt.
218 * This parameter can be one of the following values:
219 * @arg EXTI_WAKEUP_HIGH_LEVEL
220 * @arg EXTI_WAKEUP_LOW_LEVEL
221 * @param NewState: This parameter can be ENABLE or DISABLE.
222 * @retval None
223 ************************************************************************************************************/
EXTI_WakeupEventConfig(u32 EXTI_Channel,u8 EXTI_WakeUpType,ControlStatus NewState)224 void EXTI_WakeupEventConfig(u32 EXTI_Channel, u8 EXTI_WakeUpType, ControlStatus NewState)
225 {
226 /* Check the parameters */
227 Assert_Param(IS_EXTI_CHANNEL(EXTI_Channel));
228 Assert_Param(IS_EXTI_WAKEUP_TYPE(EXTI_WakeUpType));
229 Assert_Param(IS_CONTROL_STATUS(NewState));
230
231 if (NewState == ENABLE)
232 {
233 if (EXTI_WakeUpType == EXTI_WAKEUP_HIGH_LEVEL)
234 {
235 HT_EXTI->WAKUPPOLR &= ~(1 << EXTI_Channel);
236 }
237 else
238 {
239 HT_EXTI->WAKUPPOLR |= (1 << EXTI_Channel);
240 }
241
242 HT_EXTI->WAKUPCR |= (1 << EXTI_Channel);
243 }
244 else
245 {
246 HT_EXTI->WAKUPCR &= ~(1 << EXTI_Channel);
247 }
248 }
249
250 /*********************************************************************************************************//**
251 * @brief Enable or Disable the EXTI channelx event wakeup interrupt.
252 * @param NewState: This parameter can be ENABLE or DISABLE.
253 * @retval None
254 ************************************************************************************************************/
EXTI_WakeupEventIntConfig(ControlStatus NewState)255 void EXTI_WakeupEventIntConfig(ControlStatus NewState)
256 {
257 if (NewState == ENABLE)
258 {
259 /* Set EVWUPIEN bit */
260 HT_EXTI->WAKUPCR |= WAKUPCR_EVWUPIEN_SET;
261 }
262 else
263 {
264 /* Clear EVWUPIEN bit */
265 HT_EXTI->WAKUPCR &= WAKUPCR_EVWUPIEN_RESET;
266 }
267 }
268
269 /*********************************************************************************************************//**
270 * @brief Clear the specified EXTI channelx edge flag.
271 * @param EXTI_Channel: specify the EXTI channel.
272 * This parameter can be one of the following values:
273 * @arg EXTI_CHANNEL_0
274 * @arg EXTI_CHANNEL_1
275 * @arg EXTI_CHANNEL_2
276 * @arg EXTI_CHANNEL_3
277 * @arg EXTI_CHANNEL_4
278 * @arg EXTI_CHANNEL_5
279 * @arg EXTI_CHANNEL_6
280 * @arg EXTI_CHANNEL_7
281 * @arg EXTI_CHANNEL_8
282 * @arg EXTI_CHANNEL_9
283 * @arg EXTI_CHANNEL_10
284 * @arg EXTI_CHANNEL_11
285 * @arg EXTI_CHANNEL_12
286 * @arg EXTI_CHANNEL_13
287 * @arg EXTI_CHANNEL_14
288 * @arg EXTI_CHANNEL_15
289 * @retval None
290 ************************************************************************************************************/
EXTI_ClearEdgeFlag(u32 EXTI_Channel)291 void EXTI_ClearEdgeFlag(u32 EXTI_Channel)
292 {
293 u32 tmp;
294
295 /* Check the parameters */
296 Assert_Param(IS_EXTI_CHANNEL(EXTI_Channel));
297
298 tmp = 1 << EXTI_Channel;
299
300 /* Write 1 to clear both edge detection flag */
301 HT_EXTI->EDGEFLGR = tmp;
302 /* Write 1 to clear positive edge detection flag */
303 HT_EXTI->EDGESR = tmp;
304 }
305
306 /*********************************************************************************************************//**
307 * @brief Clear the specified EXTI channelx wakeup flag.
308 * @param EXTI_Channel: specify the EXTI channel.
309 * This parameter can be one of the following values:
310 * @arg EXTI_CHANNEL_0
311 * @arg EXTI_CHANNEL_1
312 * @arg EXTI_CHANNEL_2
313 * @arg EXTI_CHANNEL_3
314 * @arg EXTI_CHANNEL_4
315 * @arg EXTI_CHANNEL_5
316 * @arg EXTI_CHANNEL_6
317 * @arg EXTI_CHANNEL_7
318 * @arg EXTI_CHANNEL_8
319 * @arg EXTI_CHANNEL_9
320 * @arg EXTI_CHANNEL_10
321 * @arg EXTI_CHANNEL_11
322 * @arg EXTI_CHANNEL_12
323 * @arg EXTI_CHANNEL_13
324 * @arg EXTI_CHANNEL_14
325 * @arg EXTI_CHANNEL_15
326 * @retval None
327 ************************************************************************************************************/
EXTI_ClearWakeupFlag(u32 EXTI_Channel)328 void EXTI_ClearWakeupFlag(u32 EXTI_Channel)
329 {
330 /* Check the parameters */
331 Assert_Param(IS_EXTI_CHANNEL(EXTI_Channel));
332
333 /* Write 1 to clear wake up flag */
334 HT_EXTI->WAKUPFLG = 1 << EXTI_Channel;
335
336 /*--------------------------------------------------------------------------------------------------------*/
337 /* DSB instruction is added in this function to ensure the write operation which is for clearing interrupt*/
338 /* flag is actually completed before exiting ISR. It prevents the NVIC from detecting the interrupt again */
339 /* since the write register operation may be pended in the internal write buffer of Cortex-Mx when program*/
340 /* has exited interrupt routine. This DSB instruction may be masked if this function is called in the */
341 /* beginning of ISR and there are still some instructions before exiting ISR. */
342 /*--------------------------------------------------------------------------------------------------------*/
343 __DSB();
344 }
345
346 /*********************************************************************************************************//**
347 * @brief Get the specified EXTI channelx edge flag.
348 * @param EXTI_Channel: specify the EXTI channel.
349 * This parameter can be one of the following values:
350 * @arg EXTI_CHANNEL_0
351 * @arg EXTI_CHANNEL_1
352 * @arg EXTI_CHANNEL_2
353 * @arg EXTI_CHANNEL_3
354 * @arg EXTI_CHANNEL_4
355 * @arg EXTI_CHANNEL_5
356 * @arg EXTI_CHANNEL_6
357 * @arg EXTI_CHANNEL_7
358 * @arg EXTI_CHANNEL_8
359 * @arg EXTI_CHANNEL_9
360 * @arg EXTI_CHANNEL_10
361 * @arg EXTI_CHANNEL_11
362 * @arg EXTI_CHANNEL_12
363 * @arg EXTI_CHANNEL_13
364 * @arg EXTI_CHANNEL_14
365 * @arg EXTI_CHANNEL_15
366 * @retval SET or RESET
367 ************************************************************************************************************/
EXTI_GetEdgeFlag(u32 EXTI_Channel)368 FlagStatus EXTI_GetEdgeFlag(u32 EXTI_Channel)
369 {
370 /* Check the parameters */
371 Assert_Param(IS_EXTI_CHANNEL(EXTI_Channel));
372
373 return ((HT_EXTI->EDGEFLGR & (1UL << EXTI_Channel)) ? SET : RESET);
374 }
375
376 /*********************************************************************************************************//**
377 * @brief Get the specified EXTI channelx edge status.
378 * @param EXTI_Channel: specify the EXTI channel.
379 * This parameter can be one of the following values:
380 * @arg EXTI_CHANNEL_0
381 * @arg EXTI_CHANNEL_1
382 * @arg EXTI_CHANNEL_2
383 * @arg EXTI_CHANNEL_3
384 * @arg EXTI_CHANNEL_4
385 * @arg EXTI_CHANNEL_5
386 * @arg EXTI_CHANNEL_6
387 * @arg EXTI_CHANNEL_7
388 * @arg EXTI_CHANNEL_8
389 * @arg EXTI_CHANNEL_9
390 * @arg EXTI_CHANNEL_10
391 * @arg EXTI_CHANNEL_11
392 * @arg EXTI_CHANNEL_12
393 * @arg EXTI_CHANNEL_13
394 * @arg EXTI_CHANNEL_14
395 * @arg EXTI_CHANNEL_15
396 * @param EXTI_Edge: can be status of edge that user want to monitor.
397 * This parameter can be one of the following values:
398 * @arg EXTI_EDGE_POSITIVE
399 * @arg EXTI_EDGE_NEGATIVE
400 * @retval SET or RESET
401 ************************************************************************************************************/
EXTI_GetEdgeStatus(u32 EXTI_Channel,u32 EXTI_Edge)402 FlagStatus EXTI_GetEdgeStatus(u32 EXTI_Channel, u32 EXTI_Edge)
403 {
404 /* Check the parameters */
405 Assert_Param(IS_EXTI_CHANNEL(EXTI_Channel));
406 Assert_Param(IS_EXTI_EDGE(EXTI_Edge));
407
408 if (HT_EXTI->EDGEFLGR & (1UL << EXTI_Channel))
409 {
410 if (GetBit_BB((u32)&HT_EXTI->EDGESR, EXTI_Channel) ^ EXTI_Edge)
411 {
412 return SET;
413 }
414 else
415 {
416 return RESET;
417 }
418 }
419 else
420 {
421 return RESET;
422 }
423 }
424
425 /*********************************************************************************************************//**
426 * @brief Get the specified EXTI channelx wakeup flag.
427 * @param EXTI_Channel: specify the EXTI channel.
428 * This parameter can be one of the following values:
429 * @arg EXTI_CHANNEL_0
430 * @arg EXTI_CHANNEL_1
431 * @arg EXTI_CHANNEL_2
432 * @arg EXTI_CHANNEL_3
433 * @arg EXTI_CHANNEL_4
434 * @arg EXTI_CHANNEL_5
435 * @arg EXTI_CHANNEL_6
436 * @arg EXTI_CHANNEL_7
437 * @arg EXTI_CHANNEL_8
438 * @arg EXTI_CHANNEL_9
439 * @arg EXTI_CHANNEL_10
440 * @arg EXTI_CHANNEL_11
441 * @arg EXTI_CHANNEL_12
442 * @arg EXTI_CHANNEL_13
443 * @arg EXTI_CHANNEL_14
444 * @arg EXTI_CHANNEL_15
445 * @retval SET or RESET
446 ************************************************************************************************************/
EXTI_GetWakeupFlagStatus(u32 EXTI_Channel)447 FlagStatus EXTI_GetWakeupFlagStatus(u32 EXTI_Channel)
448 {
449 /* Check the parameters */
450 Assert_Param(IS_EXTI_CHANNEL(EXTI_Channel));
451
452 if (HT_EXTI->WAKUPFLG & (1 << EXTI_Channel))
453 {
454 return SET;
455 }
456 else
457 {
458 return RESET;
459 }
460 }
461
462 /*********************************************************************************************************//**
463 * @brief Activate or Deactivate an EXTI channelx interrupt by software.
464 * @param EXTI_Channel: specify the EXTI channel.
465 * This parameter can be one of the following values:
466 * @arg EXTI_CHANNEL_0
467 * @arg EXTI_CHANNEL_1
468 * @arg EXTI_CHANNEL_2
469 * @arg EXTI_CHANNEL_3
470 * @arg EXTI_CHANNEL_4
471 * @arg EXTI_CHANNEL_5
472 * @arg EXTI_CHANNEL_6
473 * @arg EXTI_CHANNEL_7
474 * @arg EXTI_CHANNEL_8
475 * @arg EXTI_CHANNEL_9
476 * @arg EXTI_CHANNEL_10
477 * @arg EXTI_CHANNEL_11
478 * @arg EXTI_CHANNEL_12
479 * @arg EXTI_CHANNEL_13
480 * @arg EXTI_CHANNEL_14
481 * @arg EXTI_CHANNEL_15
482 * @param NewState: This parameter can be ENABLE or DISABLE.
483 * @retval None
484 ************************************************************************************************************/
EXTI_SWIntCmd(u32 EXTI_Channel,ControlStatus NewState)485 void EXTI_SWIntCmd(u32 EXTI_Channel, ControlStatus NewState)
486 {
487 /* Check the parameters */
488 Assert_Param(IS_EXTI_CHANNEL(EXTI_Channel));
489 Assert_Param(IS_CONTROL_STATUS(NewState));
490
491 if (NewState == ENABLE)
492 {
493 HT_EXTI->SSCR = 1 << EXTI_Channel;
494 }
495 else
496 {
497 HT_EXTI->SSCR &= ~(1 << EXTI_Channel);
498 }
499 }
500
501 /*********************************************************************************************************//**
502 * @brief Get the specified EXTI channelx software command register bit.
503 * @param EXTI_Channel: specify the EXTI channel.
504 * This parameter can be one of the following values:
505 * @arg EXTI_CHANNEL_0
506 * @arg EXTI_CHANNEL_1
507 * @arg EXTI_CHANNEL_2
508 * @arg EXTI_CHANNEL_3
509 * @arg EXTI_CHANNEL_4
510 * @arg EXTI_CHANNEL_5
511 * @arg EXTI_CHANNEL_6
512 * @arg EXTI_CHANNEL_7
513 * @arg EXTI_CHANNEL_8
514 * @arg EXTI_CHANNEL_9
515 * @arg EXTI_CHANNEL_10
516 * @arg EXTI_CHANNEL_11
517 * @arg EXTI_CHANNEL_12
518 * @arg EXTI_CHANNEL_13
519 * @arg EXTI_CHANNEL_14
520 * @arg EXTI_CHANNEL_15
521 * @retval SET or RESET
522 ************************************************************************************************************/
EXTI_GetSWCmdStatus(u32 EXTI_Channel)523 FlagStatus EXTI_GetSWCmdStatus(u32 EXTI_Channel)
524 {
525 /* Check the parameters */
526 Assert_Param(IS_EXTI_CHANNEL(EXTI_Channel));
527
528 if (HT_EXTI->SSCR & (1 << EXTI_Channel))
529 {
530 return SET;
531 }
532 else
533 {
534 return RESET;
535 }
536 }
537 /**
538 * @}
539 */
540
541
542 /**
543 * @}
544 */
545
546 /**
547 * @}
548 */
549