ls1x-master-v0.4/public/ls1x_exti.h
2024-11-27 15:39:05 +08:00

187 lines
8.3 KiB
C

#ifndef _LS1X_EXTI_H_
#define _LS1X_EXTI_H_
#include "ls1x.h"
#include "Config.h"
#include "test.h"
typedef enum
{
EXTI_Mode_Level = 0x00, //电平模式
EXTI_Mode_Edge = 0x01 //边沿模式
}EXTIMode_TypeDef;
#define IS_EXTI_MODE(MODE) (((MODE) == EXTI_Mode_Level) || ((MODE) == EXTI_Mode_Edge))
/**
* @brief EXTI Trigger enumeration
*/
typedef enum
{
EXTI_Trigger_Rising_High = 0x01,
EXTI_Trigger_Falling_Low = 0x00
}EXTITrigger_TypeDef;
#define IS_EXTI_TRIGGER(TRIGGER) (((TRIGGER) == EXTI_Trigger_Rising_High) || \
((TRIGGER) == EXTI_Trigger_Falling_Low))
/**
* @brief EXTI Init Structure definition
*/
typedef struct
{
INT32U EXTI_GPIO; /*!< Specifies the EXTI lines to be enabled or disabled.
This parameter can be any combination of @ref EXTI_GPIOs */
EXTIMode_TypeDef EXTI_Mode; /*!< Specifies the mode for the EXTI lines.
This parameter can be a value of @ref EXTIMode_TypeDef */
EXTITrigger_TypeDef EXTI_Trigger; /*!< Specifies the trigger signal active edge for the EXTI lines.
This parameter can be a value of @ref EXTIMode_TypeDef */
FunctionalState EXTI_GpioCmd; /*!< Specifies the new state of the selected EXTI lines.
This parameter can be set either to ENABLE or DISABLE */
}EXTI_InitTypeDef;
/** @defgroup EXTI_GPIOs
* @{
*/
#define EXTI_GPIONONE ((INT32U)0x00000) /* No interrupt selected */
#define EXTI_GPIO0 ((INT32U)0x00000001) /*!< External interrupt line 0 */
#define EXTI_GPIO1 ((INT32U)0x00000002) /*!< External interrupt line 1 */
#define EXTI_GPIO2 ((INT32U)0x00000004) /*!< External interrupt line 2 */
#define EXTI_GPIO3 ((INT32U)0x00000008) /*!< External interrupt line 3 */
#define EXTI_GPIO4 ((INT32U)0x00000010) /*!< External interrupt line 4 */
#define EXTI_GPIO5 ((INT32U)0x00000020) /*!< External interrupt line 5 */
#define EXTI_GPIO6 ((INT32U)0x00000040) /*!< External interrupt line 6 */
#define EXTI_GPIO7 ((INT32U)0x00000080) /*!< External interrupt line 7 */
#define EXTI_GPIO8 ((INT32U)0x00000100) /*!< External interrupt line 8 */
#define EXTI_GPIO9 ((INT32U)0x00000200) /*!< External interrupt line 9 */
#define EXTI_GPIO10 ((INT32U)0x00000400) /*!< External interrupt line 10 */
#define EXTI_GPIO11 ((INT32U)0x00000800) /*!< External interrupt line 11 */
#define EXTI_GPIO12 ((INT32U)0x00001000) /*!< External interrupt line 12 */
#define EXTI_GPIO13 ((INT32U)0x00002000) /*!< External interrupt line 13 */
#define EXTI_GPIO14 ((INT32U)0x00004000) /*!< External interrupt line 14 */
#define EXTI_GPIO15 ((INT32U)0x00008000) /*!< External interrupt line 15 */
#define EXTI_GPIO16 ((INT32U)0x00010000) /*!< External interrupt line 16 */
#define EXTI_GPIO17 ((INT32U)0x00020000) /*!< External interrupt line 17 */
#define EXTI_GPIO18 ((INT32U)0x00040000) /*!< External interrupt line 18 */
#define EXTI_GPIO19 ((INT32U)0x00080000) /*!< External interrupt line 19 */
#define EXTI_GPIO20 ((INT32U)0x00100000) /*!< External interrupt line 20 */
#define EXTI_GPIO21 ((INT32U)0x00200000) /*!< External interrupt line 21 */
#define EXTI_GPIO22 ((INT32U)0x00400000) /*!< External interrupt line 22 */
#define EXTI_GPIO23 ((INT32U)0x00800000) /*!< External interrupt line 23 */
#define EXTI_GPIO24 ((INT32U)0x01000000) /*!< External interrupt line 24 */
#define EXTI_GPIO25 ((INT32U)0x02000000) /*!< External interrupt line 25 */
#define EXTI_GPIO26 ((INT32U)0x04000000) /*!< External interrupt line 26 */
#define EXTI_GPIO27 ((INT32U)0x08000000) /*!< External interrupt line 27 */
#define EXTI_GPIO28 ((INT32U)0x10000000) /*!< External interrupt line 28 */
#define EXTI_GPIO29 ((INT32U)0x20000000) /*!< External interrupt line 29 */
#define EXTI_GPIO30 ((INT32U)0x40000000) /*!< External interrupt line 30 */
#define EXTI_GPIO31 ((INT32U)0x80000000) /*!< External interrupt line 31 */
#if defined (LS1C102)
#define IRQ_GPIO_A0 EXTI_GPIO0
#define IRQ_GPIO_A1 EXTI_GPIO1
#define IRQ_GPIO_A2 EXTI_GPIO2
#define IRQ_GPIO_A3 EXTI_GPIO3
#define IRQ_GPIO_A4 EXTI_GPIO4
#define IRQ_GPIO_A5 EXTI_GPIO5
#define IRQ_GPIO_A6 EXTI_GPIO6
#define IRQ_GPIO_A7 EXTI_GPIO7
#define IRQ_GPIO_B0 EXTI_GPIO8
#define IRQ_GPIO_B1 EXTI_GPIO9
#define IRQ_GPIO_B2 EXTI_GPIO10
#define IRQ_GPIO_B3 EXTI_GPIO11
#define IRQ_GPIO_B4 EXTI_GPIO12
#define IRQ_GPIO_B5 EXTI_GPIO13
#define IRQ_GPIO_B6 EXTI_GPIO14
#define IRQ_GPIO_B7 EXTI_GPIO15
#define IRQ_GPIO_C0 EXTI_GPIO16
#define IRQ_GPIO_C1 EXTI_GPIO17
#define IRQ_GPIO_C2 EXTI_GPIO18
#define IRQ_GPIO_C3 EXTI_GPIO19
#define IRQ_GPIO_C4 EXTI_GPIO20
#define IRQ_GPIO_C5 EXTI_GPIO21
#define IRQ_GPIO_C6 EXTI_GPIO22
#define IRQ_GPIO_C7 EXTI_GPIO23
#define IRQ_GPIO_D0 EXTI_GPIO24
#define IRQ_GPIO_D1 EXTI_GPIO25
#define IRQ_GPIO_D2 EXTI_GPIO26
#define IRQ_GPIO_D3 EXTI_GPIO27
#define IRQ_GPIO_D4 EXTI_GPIO28
#define IRQ_GPIO_D5 EXTI_GPIO29
#define IRQ_GPIO_D6 EXTI_GPIO30
#define IRQ_GPIO_D7 EXTI_GPIO31
#elif defined (LS1C103)
#define IRQ_GPIO_A0 EXTI_GPIO0
#define IRQ_GPIO_A1 EXTI_GPIO1
#define IRQ_GPIO_A2 EXTI_GPIO2
#define IRQ_GPIO_A3 EXTI_GPIO3
#define IRQ_GPIO_A4 EXTI_GPIO4
#define IRQ_GPIO_A5 EXTI_GPIO5
#define IRQ_GPIO_A6 EXTI_GPIO6
#define IRQ_GPIO_A7 EXTI_GPIO7
#define IRQ_GPIO_A8 EXTI_GPIO8
#define IRQ_GPIO_A9 EXTI_GPIO9
#define IRQ_GPIO_A10 EXTI_GPIO10
#define IRQ_GPIO_A11 EXTI_GPIO11
#define IRQ_GPIO_A12 EXTI_GPIO12
#define IRQ_GPIO_A13 EXTI_GPIO13
#define IRQ_GPIO_A14 EXTI_GPIO14
#define IRQ_GPIO_A15 EXTI_GPIO15
#define IRQ_GPIO_B0 EXTI_GPIO16
#define IRQ_GPIO_B1 EXTI_GPIO17
#define IRQ_GPIO_B2 EXTI_GPIO18
#define IRQ_GPIO_B3 EXTI_GPIO19
#define IRQ_GPIO_B4 EXTI_GPIO20
#define IRQ_GPIO_B5 EXTI_GPIO21
#define IRQ_GPIO_B6 EXTI_GPIO22
#define IRQ_GPIO_B7 EXTI_GPIO23
#define IRQ_GPIO_B8 EXTI_GPIO24
#define IRQ_GPIO_B9 EXTI_GPIO25
#define IRQ_GPIO_B10 EXTI_GPIO26
#define IRQ_GPIO_B11 EXTI_GPIO27
#define IRQ_GPIO_B12 EXTI_GPIO28
#define IRQ_GPIO_B13 EXTI_GPIO29
#define IRQ_GPIO_B14 EXTI_GPIO30
#define IRQ_GPIO_B15 EXTI_GPIO31
#endif
#define IS_EXTI_GPIO(GPIO) (((GPIO) == EXTI_GPIO0) || ((GPIO) == EXTI_GPIO1) || \
((GPIO) == EXTI_GPIO2) || ((GPIO) == EXTI_GPIO3) || \
((GPIO) == EXTI_GPIO4) || ((GPIO) == EXTI_GPIO5) || \
((GPIO) == EXTI_GPIO6) || ((GPIO) == EXTI_GPIO7) || \
((GPIO) == EXTI_GPIO8) || ((GPIO) == EXTI_GPIO9) || \
((GPIO) == EXTI_GPIO10) || ((GPIO) == EXTI_GPIO11) || \
((GPIO) == EXTI_GPIO12) || ((GPIO) == EXTI_GPIO13) || \
((GPIO) == EXTI_GPIO14) || ((GPIO) == EXTI_GPIO15) || \
((GPIO) == EXTI_GPIO16) || ((GPIO) == EXTI_GPIO17) || \
((GPIO) == EXTI_GPIO18) || ((GPIO) == EXTI_GPIO19) ||\
((GPIO) == EXTI_GPIO20) || ((GPIO) == EXTI_GPIO21) || \
((GPIO) == EXTI_GPIO22) || ((GPIO) == EXTI_GPIO23) || \
((GPIO) == EXTI_GPIO24) || ((GPIO) == EXTI_GPIO25) || \
((GPIO) == EXTI_GPIO26) || ((GPIO) == EXTI_GPIO27) || \
((GPIO) == EXTI_GPIO28) || ((GPIO) == EXTI_GPIO29) || \
((GPIO) == EXTI_GPIO30) || ((GPIO) == EXTI_GPIO31))
/** @defgroup EXTI_Exported_Functions
* @{
*/
void EXTI_DeInit(EXTI_TypeDef* exti);
void EXTI_Init(EXTI_TypeDef* exti, EXTI_InitTypeDef* EXTI_InitStruct);
void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct);
FlagStatus EXTI_GetFlagStatus(EXTI_TypeDef* exti, INT32U EXTI_GPIO);
void EXTI_ClearFlag(EXTI_TypeDef* exti, INT32U EXTI_GPIO);
ITStatus EXTI_GetITStatus(EXTI_TypeDef* exti, INT32U EXTI_GPIO);
void EXTI_ClearITPendingBit(EXTI_TypeDef* exti, INT32U EXTI_GPIO);
#endif /* INCLUDE_EXTI_H_ */