lib_gpio.h 7.7 KB

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