1 /** 2 ****************************************************************************** 3 * @file lib_gpio.h 4 * @author Application Team 5 * @version V4.4.0 6 * @date 2018-09-27 7 * @brief GPIO library. 8 ****************************************************************************** 9 * @attention 10 * 11 ****************************************************************************** 12 */ 13 #ifndef __LIB_GPIO_H 14 #define __LIB_GPIO_H 15 16 #ifdef __cplusplus 17 extern "C" { 18 #endif 19 20 #include "target.h" 21 22 typedef struct 23 { 24 uint32_t GPIO_Pin; 25 uint32_t GPIO_Mode; 26 } GPIO_InitType; 27 28 /** 29 * @brief Bit_State_enumeration 30 */ 31 typedef enum { 32 Bit_RESET = 0, 33 Bit_SET 34 } BitState; 35 36 //GPIO_Pin 37 #define GPIO_Pin_0 ((uint16_t)0x0001) 38 #define GPIO_Pin_1 ((uint16_t)0x0002) 39 #define GPIO_Pin_2 ((uint16_t)0x0004) 40 #define GPIO_Pin_3 ((uint16_t)0x0008) 41 #define GPIO_Pin_4 ((uint16_t)0x0010) 42 #define GPIO_Pin_5 ((uint16_t)0x0020) 43 #define GPIO_Pin_6 ((uint16_t)0x0040) 44 #define GPIO_Pin_7 ((uint16_t)0x0080) 45 #define GPIO_Pin_8 ((uint16_t)0x0100) 46 #define GPIO_Pin_9 ((uint16_t)0x0200) 47 #define GPIO_Pin_10 ((uint16_t)0x0400) 48 #define GPIO_Pin_11 ((uint16_t)0x0800) 49 #define GPIO_Pin_12 ((uint16_t)0x1000) 50 #define GPIO_Pin_13 ((uint16_t)0x2000) 51 #define GPIO_Pin_14 ((uint16_t)0x4000) 52 #define GPIO_Pin_15 ((uint16_t)0x8000) 53 #define GPIO_Pin_All ((uint16_t)0xFFFF) 54 //GPIO_Mode 55 #define GPIO_Mode_INPUT (0xCU) 56 #define GPIO_Mode_OUTPUT_CMOS (0x2U) 57 #define GPIO_Mode_OUTPUT_OD (0x3U) 58 #define GPIO_Mode_INOUT_OD (0xBU) 59 #define GPIO_Mode_INOUT_CMOS (0xAU) 60 #define GPIO_Mode_FORBIDDEN (0x4U) 61 62 //GPIO AF 63 #define GPIOB_AF_PLLHDIV IOB_SEL_SEL1 64 #define GPIOB_AF_OSC IOB_SEL_SEL6 65 #define GPIOB_AF_PLLLOUT IOB_SEL_SEL2 66 #define GPIOE_AF_CMP1O IOE_SEL_SEL7 67 68 //PMUIO AF 69 #define PMUIO7_AF_PLLDIV PMU_IOASEL_SEL7 70 #define PMUIO_AF_CMP2O PMU_IOASEL_SEL6 71 #define PMUIO3_AF_PLLDIV PMU_IOASEL_SEL3 72 #define PMUIO_AF_Msk (PMUIO7_AF_PLLDIV | PMUIO_AF_CMP2O | PMUIO3_AF_PLLDIV) 73 74 //GPIO pin remap 75 #define GPIO_REMAP_I2C IO_MISC_I2CIOC 76 77 //PLLDIV 78 #define GPIO_PLLDIV_1 IO_MISC_PLLHDIV_1 79 #define GPIO_PLLDIV_2 IO_MISC_PLLHDIV_2 80 #define GPIO_PLLDIV_4 IO_MISC_PLLHDIV_4 81 #define GPIO_PLLDIV_8 IO_MISC_PLLHDIV_8 82 #define GPIO_PLLDIV_16 IO_MISC_PLLHDIV_16 83 84 /* Private macros ------------------------------------------------------------*/ 85 #define IS_GPIO_PIN(__PIN__) ((((__PIN__) & GPIO_Pin_All) != 0UL) &&\ 86 (((__PIN__) & ~GPIO_Pin_All) == 0UL)) 87 88 #define IS_GPIO_PINR(__PINR__) (((__PINR__) == GPIO_Pin_0) ||\ 89 ((__PINR__) == GPIO_Pin_1) ||\ 90 ((__PINR__) == GPIO_Pin_2) ||\ 91 ((__PINR__) == GPIO_Pin_3) ||\ 92 ((__PINR__) == GPIO_Pin_4) ||\ 93 ((__PINR__) == GPIO_Pin_5) ||\ 94 ((__PINR__) == GPIO_Pin_6) ||\ 95 ((__PINR__) == GPIO_Pin_7) ||\ 96 ((__PINR__) == GPIO_Pin_8) ||\ 97 ((__PINR__) == GPIO_Pin_9) ||\ 98 ((__PINR__) == GPIO_Pin_10) ||\ 99 ((__PINR__) == GPIO_Pin_11) ||\ 100 ((__PINR__) == GPIO_Pin_12) ||\ 101 ((__PINR__) == GPIO_Pin_13) ||\ 102 ((__PINR__) == GPIO_Pin_14) ||\ 103 ((__PINR__) == GPIO_Pin_15)) 104 105 #define IS_GPIO_MODE(__MODE__) (((__MODE__) == GPIO_Mode_INPUT) ||\ 106 ((__MODE__) == GPIO_Mode_OUTPUT_CMOS) ||\ 107 ((__MODE__) == GPIO_Mode_OUTPUT_OD) ||\ 108 ((__MODE__) == GPIO_Mode_INOUT_OD) ||\ 109 ((__MODE__) == GPIO_Mode_INOUT_CMOS) ||\ 110 ((__MODE__) == GPIO_Mode_FORBIDDEN)) 111 112 #define IS_GPIO_BITVAL(__BITVAL__) (((__BITVAL__) == 1U) || ((__BITVAL__) == 0U)) 113 114 #define IS_GPIO_GPIOAF(__GPIOAF__) (((__GPIOAF__) == GPIOB_AF_PLLHDIV) ||\ 115 ((__GPIOAF__) == GPIOB_AF_OSC) ||\ 116 ((__GPIOAF__) == GPIOE_AF_CMP1O) ||\ 117 ((__GPIOAF__) == GPIOB_AF_PLLLOUT)) 118 119 #define IS_GPIO_PMUIOAF(__PMUIOAF__) ((((__PMUIOAF__) & PMUIO_AF_Msk) != 0U) &&\ 120 (((__PMUIOAF__) & ~PMUIO_AF_Msk) == 0U)) 121 122 #define IS_GPIO_REMAP(__REMAP__) ((__REMAP__) == GPIO_REMAP_I2C) 123 124 #define IS_GPIO_PLLDIV(__PLLDIV__) (((__PLLDIV__) == GPIO_PLLDIV_1) ||\ 125 ((__PLLDIV__) == GPIO_PLLDIV_2) ||\ 126 ((__PLLDIV__) == GPIO_PLLDIV_4) ||\ 127 ((__PLLDIV__) == GPIO_PLLDIV_8) ||\ 128 ((__PLLDIV__) == GPIO_PLLDIV_16)) 129 130 /* Exported Functions ------------------------------------------------------- */ 131 /* GPIO Exported Functions Group1: 132 Initialization and functions --------------*/ 133 void GPIOBToF_Init(GPIO_TypeDef *GPIOx, GPIO_InitType *InitStruct); 134 void GPIOA_Init(GPIOA_TypeDef *GPIOx, GPIO_InitType *InitStruct); 135 /* GPIO Exported Functions Group2: 136 Read input data ---------------------------*/ 137 uint8_t GPIOBToF_ReadInputDataBit(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); 138 uint8_t GPIOA_ReadInputDataBit(GPIOA_TypeDef *GPIOx, uint16_t GPIO_Pin); 139 uint16_t GPIOBToF_ReadInputData(GPIO_TypeDef* GPIOx); 140 uint16_t GPIOA_ReadInputData(GPIOA_TypeDef* GPIOx); 141 /* GPIO Exported Functions Group3: 142 Read output data --------------------------*/ 143 uint8_t GPIOBToF_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 144 uint8_t GPIOA_ReadOutputDataBit(GPIOA_TypeDef* GPIOx, uint16_t GPIO_Pin); 145 uint16_t GPIOBToF_ReadOutputData(GPIO_TypeDef* GPIOx); 146 uint16_t GPIOA_ReadOutputData(GPIOA_TypeDef* GPIOx); 147 /* GPIO Exported Functions Group4: 148 Write output data -------------------------*/ 149 void GPIOBToF_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 150 void GPIOA_SetBits(GPIOA_TypeDef* GPIOx, uint16_t GPIO_Pin); 151 void GPIOBToF_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 152 void GPIOA_ResetBits(GPIOA_TypeDef* GPIOx, uint16_t GPIO_Pin); 153 void GPIOBToF_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, uint8_t val); 154 void GPIOA_WriteBit(GPIOA_TypeDef* GPIOx, uint16_t GPIO_Pin, uint8_t val); 155 void GPIOBToF_Write(GPIO_TypeDef* GPIOx, uint16_t val); 156 void GPIOA_Write(GPIOA_TypeDef* GPIOx, uint16_t val); 157 /* GPIO Exported Functions Group5: 158 IO AF configure ---------------------------*/ 159 void GPIOBToF_AFConfig(GPIO_TypeDef* GPIOx, uint32_t GPIO_AFx, uint8_t NewState); 160 void GPIOA_AFConfig(uint32_t PMUIO_AFx, uint8_t NewState); 161 /* GPIO Exported Functions Group6: 162 IO Remap configure ------------------------*/ 163 void GPIO_PinRemapConfig(uint32_t GPIO_Remap, uint8_t NewState); 164 /* GPIO Exported Functions Group7: 165 Others ------------------------------------*/ 166 void GPIO_PLLDIV_Config(uint32_t Divider); 167 void GPIOA_NoDeg_Cmd( uint16_t GPIO_Pin, uint8_t NewState); 168 169 #ifdef __cplusplus 170 } 171 #endif 172 173 #endif /* __LIB_GPIO_H */ 174 175 /*********************************** END OF FILE ******************************/ 176