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

241 lines
7.9 KiB
C

#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