1 /********************************** (C) COPYRIGHT ******************************* 2 * File Name : ch32v10x_exti.h 3 * Author : WCH 4 * Version : V1.0.0 5 * Date : 2020/04/30 6 * Description : This file contains all the functions prototypes for the 7 * EXTI firmware library. 8 * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. 9 * SPDX-License-Identifier: Apache-2.0 10 *******************************************************************************/ 11 #ifndef __CH32V10x_EXTI_H 12 #define __CH32V10x_EXTI_H 13 14 #ifdef __cplusplus 15 extern "C" { 16 #endif 17 18 #include "ch32v10x.h" 19 20 /* EXTI mode enumeration */ 21 typedef enum 22 { 23 EXTI_Mode_Interrupt = 0x00, 24 EXTI_Mode_Event = 0x04 25 } EXTIMode_TypeDef; 26 27 /* EXTI Trigger enumeration */ 28 typedef enum 29 { 30 EXTI_Trigger_Rising = 0x08, 31 EXTI_Trigger_Falling = 0x0C, 32 EXTI_Trigger_Rising_Falling = 0x10 33 } EXTITrigger_TypeDef; 34 35 /* EXTI Init Structure definition */ 36 typedef struct 37 { 38 uint32_t EXTI_Line; /* Specifies the EXTI lines to be enabled or disabled. 39 This parameter can be any combination of @ref EXTI_Lines */ 40 41 EXTIMode_TypeDef EXTI_Mode; /* Specifies the mode for the EXTI lines. 42 This parameter can be a value of @ref EXTIMode_TypeDef */ 43 44 EXTITrigger_TypeDef EXTI_Trigger; /* Specifies the trigger signal active edge for the EXTI lines. 45 This parameter can be a value of @ref EXTIMode_TypeDef */ 46 47 FunctionalState EXTI_LineCmd; /* Specifies the new state of the selected EXTI lines. 48 This parameter can be set either to ENABLE or DISABLE */ 49 } EXTI_InitTypeDef; 50 51 /* EXTI_Lines */ 52 #define EXTI_Line0 ((uint32_t)0x00001) /* External interrupt line 0 */ 53 #define EXTI_Line1 ((uint32_t)0x00002) /* External interrupt line 1 */ 54 #define EXTI_Line2 ((uint32_t)0x00004) /* External interrupt line 2 */ 55 #define EXTI_Line3 ((uint32_t)0x00008) /* External interrupt line 3 */ 56 #define EXTI_Line4 ((uint32_t)0x00010) /* External interrupt line 4 */ 57 #define EXTI_Line5 ((uint32_t)0x00020) /* External interrupt line 5 */ 58 #define EXTI_Line6 ((uint32_t)0x00040) /* External interrupt line 6 */ 59 #define EXTI_Line7 ((uint32_t)0x00080) /* External interrupt line 7 */ 60 #define EXTI_Line8 ((uint32_t)0x00100) /* External interrupt line 8 */ 61 #define EXTI_Line9 ((uint32_t)0x00200) /* External interrupt line 9 */ 62 #define EXTI_Line10 ((uint32_t)0x00400) /* External interrupt line 10 */ 63 #define EXTI_Line11 ((uint32_t)0x00800) /* External interrupt line 11 */ 64 #define EXTI_Line12 ((uint32_t)0x01000) /* External interrupt line 12 */ 65 #define EXTI_Line13 ((uint32_t)0x02000) /* External interrupt line 13 */ 66 #define EXTI_Line14 ((uint32_t)0x04000) /* External interrupt line 14 */ 67 #define EXTI_Line15 ((uint32_t)0x08000) /* External interrupt line 15 */ 68 #define EXTI_Line16 ((uint32_t)0x10000) /* External interrupt line 16 Connected to the PVD Output */ 69 #define EXTI_Line17 ((uint32_t)0x20000) /* External interrupt line 17 Connected to the RTC Alarm event */ 70 #define EXTI_Line18 ((uint32_t)0x40000) 71 #define EXTI_Line19 ((uint32_t)0x80000) /* External interrupt line 19 Connected to the USBHD Wakeup event */ 72 73 void EXTI_DeInit(void); 74 void EXTI_Init(EXTI_InitTypeDef *EXTI_InitStruct); 75 void EXTI_StructInit(EXTI_InitTypeDef *EXTI_InitStruct); 76 void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line); 77 FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line); 78 void EXTI_ClearFlag(uint32_t EXTI_Line); 79 ITStatus EXTI_GetITStatus(uint32_t EXTI_Line); 80 void EXTI_ClearITPendingBit(uint32_t EXTI_Line); 81 82 #ifdef __cplusplus 83 } 84 #endif 85 86 #endif /* __CH32V10x_EXTI_H */ 87