#ifndef _LS1X_GPIO_H_ #define _LS1X_GPIO_H_ #include"ls1x.h" /** * @说明 判断是否为GPIO外设 */ #define IS_GPIO(PERIPH) (((PERIPH) == GPIOA) || ((PERIPH) == GPIOB)) #define GPIO_Pin_0 ((uint32_t)0x00000001) /*!< Pin 0 selected */ #define GPIO_Pin_1 ((uint32_t)0x00000002) /*!< Pin 1 selected */ #define GPIO_Pin_2 ((uint32_t)0x00000004) /*!< Pin 2 selected */ #define GPIO_Pin_3 ((uint32_t)0x00000008) /*!< Pin 3 selected */ #define GPIO_Pin_4 ((uint32_t)0x00000010) /*!< Pin 4 selected */ #define GPIO_Pin_5 ((uint32_t)0x00000020) /*!< Pin 5 selected */ #define GPIO_Pin_6 ((uint32_t)0x00000040) /*!< Pin 6 selected */ #define GPIO_Pin_7 ((uint32_t)0x00000080) /*!< Pin 7 selected */ #define GPIO_Pin_8 ((uint32_t)0x00000100) /*!< Pin 8 selected */ #define GPIO_Pin_9 ((uint32_t)0x00000200) /*!< Pin 9 selected */ #define GPIO_Pin_10 ((uint32_t)0x00000400) /*!< Pin 10 selected */ #define GPIO_Pin_11 ((uint32_t)0x00000800) /*!< Pin 11 selected */ #define GPIO_Pin_12 ((uint32_t)0x00001000) /*!< Pin 12 selected */ #define GPIO_Pin_13 ((uint32_t)0x00002000) /*!< Pin 13 selected */ #define GPIO_Pin_14 ((uint32_t)0x00004000) /*!< Pin 14 selected */ #define GPIO_Pin_15 ((uint32_t)0x00008000) /*!< Pin 15 selected */ #define GPIO_Pin_16 ((uint32_t)0x00010000) /*!< Pin 16 selected */ #define GPIO_Pin_17 ((uint32_t)0x00020000) /*!< Pin 17 selected */ #define GPIO_Pin_18 ((uint32_t)0x00040000) /*!< Pin 18 selected */ #define GPIO_Pin_19 ((uint32_t)0x00080000) /*!< Pin 19 selected */ #define GPIO_Pin_20 ((uint32_t)0x00100000) /*!< Pin 20 selected */ #define GPIO_Pin_21 ((uint32_t)0x00200000) /*!< Pin 21 selected */ #define GPIO_Pin_22 ((uint32_t)0x00400000) /*!< Pin 22 selected */ #define GPIO_Pin_23 ((uint32_t)0x00800000) /*!< Pin 23 selected */ #define GPIO_Pin_24 ((uint32_t)0x01000000) /*!< Pin 24 selected */ #define GPIO_Pin_25 ((uint32_t)0x02000000) /*!< Pin 25 selected */ #define GPIO_Pin_26 ((uint32_t)0x04000000) /*!< Pin 26 selected */ #define GPIO_Pin_27 ((uint32_t)0x08000000) /*!< Pin 27 selected */ #define GPIO_Pin_28 ((uint32_t)0x10000000) /*!< Pin 28 selected */ #define GPIO_Pin_29 ((uint32_t)0x20000000) /*!< Pin 29 selected */ #define GPIO_Pin_30 ((uint32_t)0x40000000) /*!< Pin 30 selected */ #define GPIO_Pin_31 ((uint32_t)0x80000000) /*!< Pin 31 selected */ #define GPIO_Pin_All ((uint16_t)0xFFFFFFFF) /*!< All pins selected */ #define IS_GPIO_PIN(PIN) (((PIN) == GPIO_Pin_0) || \ ((PIN) == GPIO_Pin_1) || \ ((PIN) == GPIO_Pin_2) || \ ((PIN) == GPIO_Pin_3) || \ ((PIN) == GPIO_Pin_4) || \ ((PIN) == GPIO_Pin_5) || \ ((PIN) == GPIO_Pin_6) || \ ((PIN) == GPIO_Pin_7) || \ ((PIN) == GPIO_Pin_8) || \ ((PIN) == GPIO_Pin_9) || \ ((PIN) == GPIO_Pin_10) || \ ((PIN) == GPIO_Pin_11) || \ ((PIN) == GPIO_Pin_12) || \ ((PIN) == GPIO_Pin_13) || \ ((PIN) == GPIO_Pin_14) || \ ((PIN) == GPIO_Pin_15) || \ ((PIN) == GPIO_Pin_16) || \ ((PIN) == GPIO_Pin_17) || \ ((PIN) == GPIO_Pin_18) || \ ((PIN) == GPIO_Pin_19) || \ ((PIN) == GPIO_Pin_20) || \ ((PIN) == GPIO_Pin_21) || \ ((PIN) == GPIO_Pin_22) || \ ((PIN) == GPIO_Pin_23) || \ ((PIN) == GPIO_Pin_24) || \ ((PIN) == GPIO_Pin_25) || \ ((PIN) == GPIO_Pin_26) || \ ((PIN) == GPIO_Pin_27) || \ ((PIN) == GPIO_Pin_28) || \ ((PIN) == GPIO_Pin_29) || \ ((PIN) == GPIO_Pin_30) || \ ((PIN) == GPIO_Pin_31)) enum GPIO_PIN { GPIO_PIN_0 = 0, GPIO_PIN_1, GPIO_PIN_2, GPIO_PIN_3, GPIO_PIN_4, GPIO_PIN_5, GPIO_PIN_6, GPIO_PIN_7, GPIO_PIN_8, GPIO_PIN_9, GPIO_PIN_10, GPIO_PIN_11, GPIO_PIN_12, GPIO_PIN_13, GPIO_PIN_14, GPIO_PIN_15, GPIO_PIN_16, GPIO_PIN_17, GPIO_PIN_18, GPIO_PIN_19, GPIO_PIN_20, GPIO_PIN_21, GPIO_PIN_22, GPIO_PIN_23, GPIO_PIN_24, GPIO_PIN_25, GPIO_PIN_26, GPIO_PIN_27, GPIO_PIN_28, GPIO_PIN_29, GPIO_PIN_30, GPIO_PIN_31, GPIO_PIN_32, GPIO_PIN_33, GPIO_PIN_34, GPIO_PIN_35, GPIO_PIN_36, GPIO_PIN_37, GPIO_PIN_38, GPIO_PIN_39, GPIO_PIN_40, GPIO_PIN_41, GPIO_PIN_42, GPIO_PIN_43, GPIO_PIN_44, GPIO_PIN_45, GPIO_PIN_46, GPIO_PIN_47, GPIO_PIN_48, GPIO_PIN_49, GPIO_PIN_50, GPIO_PIN_51, GPIO_PIN_52, GPIO_PIN_53, GPIO_PIN_54, GPIO_PIN_55, GPIO_PIN_56, GPIO_PIN_57, GPIO_PIN_58, GPIO_PIN_59, GPIO_PIN_60, GPIO_PIN_61, GPIO_PIN_62, GPIO_PIN_63, GPIO_PIN_MAX }; typedef enum { GPIO_FUNC_GPIO = 0, GPIO_FUNC_MAIN, GPIO_FUNC_FIRST, GPIO_FUNC_SECOND } GPIOFunc_TypeDef; /** * @说明 管脚状态枚举 */ typedef enum { Bit_RESET = 0, Bit_SET }BitAction; #define IS_GPIO_BIT_ACTION(ACTION) (((ACTION) == Bit_RESET) || ((ACTION) == Bit_SET)) #if defined (LS1C102) /***************LS1C102************************/ typedef enum { GPIO_Mode_In = 0, GPIO_Mode_Out } GPIOMode_TypeDef; /** * @说明 GPIO 初始化定义 */ typedef struct { INT8U GPIO_Pin; GPIOMode_TypeDef GPIO_Mode; GPIOFunc_TypeDef GPIO_Func; } GPIO_InitTypeDef; #elif defined (LS1C103) /***************LS1C103************************/ typedef enum { GPIO_Speed_10MHz = 1, GPIO_Speed_2MHz, GPIO_Speed_50MHz }GPIOSpeed_TypeDef; #define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_Speed_10MHz) || ((SPEED) == GPIO_Speed_2MHz) || \ ((SPEED) == GPIO_Speed_50MHz)) /* Configuration Mode enumeration --------------------------------------------*/ typedef enum { GPIO_Mode_AIN = 0x0, GPIO_Mode_IN_FLOATING = 0x04, GPIO_Mode_IPD = 0x28, GPIO_Mode_IPU = 0x48, GPIO_Mode_Out_OD = 0x14, GPIO_Mode_Out_PP = 0x10, GPIO_Mode_AF_OD = 0x1C, GPIO_Mode_AF_PP = 0x18 }GPIOMode_TypeDef; #define IS_GPIO_MODE(MODE) (((MODE) == GPIO_Mode_AIN) || ((MODE) == GPIO_Mode_IN_FLOATING) || \ ((MODE) == GPIO_Mode_IPD) || ((MODE) == GPIO_Mode_IPU) || \ ((MODE) == GPIO_Mode_Out_OD) || ((MODE) == GPIO_Mode_Out_PP) || \ ((MODE) == GPIO_Mode_AF_OD) || ((MODE) == GPIO_Mode_AF_PP)) /* GPIO Init structure definition */ typedef struct { uint16_t GPIO_Pin; GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode; }GPIO_InitTypeDef; #endif //void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); //void GPIO_BitInit(BITIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); //uint8_t GPIO_ReadInputDataBit(BITIO_TypeDef* GPIOx, uint32_t GPIO_Pin); //uint32_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx); //uint8_t GPIO_ReadOutputDataBit(BITIO_TypeDef* GPIOx, uint32_t GPIO_Pin); //uint32_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx); //void GPIO_WriteBit(BITIO_TypeDef* GPIOx, uint32_t GPIO_Pin, BitAction Value); //void GPIO_WriteData(GPIO_TypeDef* GPIOx, uint32_t Value); void AFIO_RemapConfig(AFIO_TypeDef* AFIOx, uint16_t GPIO_Pin, GPIOFunc_TypeDef GPIO_Func); /****only 103 till this***/ void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); #endif