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