CH57x_gpio.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #ifndef __CH57x_GPIO_H__
  2. #define __CH57x_GPIO_H__
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. #include "CH579SFR.h"
  7. #include "core_cm0.h"
  8. /**
  9. * @brief GPIO_pins_define
  10. */
  11. #define GPIO_Pin_0 (0x00000001) /*!< Pin 0 selected */
  12. #define GPIO_Pin_1 (0x00000002) /*!< Pin 1 selected */
  13. #define GPIO_Pin_2 (0x00000004) /*!< Pin 2 selected */
  14. #define GPIO_Pin_3 (0x00000008) /*!< Pin 3 selected */
  15. #define GPIO_Pin_4 (0x00000010) /*!< Pin 4 selected */
  16. #define GPIO_Pin_5 (0x00000020) /*!< Pin 5 selected */
  17. #define GPIO_Pin_6 (0x00000040) /*!< Pin 6 selected */
  18. #define GPIO_Pin_7 (0x00000080) /*!< Pin 7 selected */
  19. #define GPIO_Pin_8 (0x00000100) /*!< Pin 8 selected */
  20. #define GPIO_Pin_9 (0x00000200) /*!< Pin 9 selected */
  21. #define GPIO_Pin_10 (0x00000400) /*!< Pin 10 selected */
  22. #define GPIO_Pin_11 (0x00000800) /*!< Pin 11 selected */
  23. #define GPIO_Pin_12 (0x00001000) /*!< Pin 12 selected */
  24. #define GPIO_Pin_13 (0x00002000) /*!< Pin 13 selected */
  25. #define GPIO_Pin_14 (0x00004000) /*!< Pin 14 selected */
  26. #define GPIO_Pin_15 (0x00008000) /*!< Pin 15 selected */
  27. #define GPIO_Pin_16 (0x00010000) /*!< Pin 16 selected */
  28. #define GPIO_Pin_17 (0x00020000) /*!< Pin 17 selected */
  29. #define GPIO_Pin_18 (0x00040000) /*!< Pin 18 selected */
  30. #define GPIO_Pin_19 (0x00080000) /*!< Pin 19 selected */
  31. #define GPIO_Pin_20 (0x00100000) /*!< Pin 20 selected */
  32. #define GPIO_Pin_21 (0x00200000) /*!< Pin 21 selected */
  33. #define GPIO_Pin_22 (0x00400000) /*!< Pin 22 selected */
  34. #define GPIO_Pin_23 (0x00800000) /*!< Pin 23 selected */
  35. #define GPIO_Pin_All (0xFFFFFFFF) /*!< All pins selected */
  36. /**
  37. * @brief Configuration GPIO Mode
  38. */
  39. typedef enum
  40. {
  41. GPIO_ModeIN_Floating, //浮空输入
  42. GPIO_ModeIN_PU, //上拉输入
  43. GPIO_ModeIN_PD, //下拉输入
  44. GPIO_ModeOut_PP_5mA, //推挽输出最大5mA
  45. GPIO_ModeOut_PP_20mA, //推挽输出最大20mA
  46. }GPIOModeTypeDef;
  47. /**
  48. * @brief Configuration GPIO IT Mode
  49. */
  50. typedef enum
  51. {
  52. GPIO_ITMode_LowLevel, //低电平触发
  53. GPIO_ITMode_HighLevel, //高电平触发
  54. GPIO_ITMode_FallEdge, //下降沿触发
  55. GPIO_ITMode_RiseEdge, //上升沿触发
  56. }GPIOITModeTpDef;
  57. void GPIOA_ModeCfg( UINT32 pin, GPIOModeTypeDef mode ); /* GPIOA端口引脚模式配置 */
  58. void GPIOB_ModeCfg( UINT32 pin, GPIOModeTypeDef mode ); /* GPIOB端口引脚模式配置 */
  59. #define GPIOA_ResetBits( pin ) (R32_PA_CLR |= pin) /* GPIOA端口引脚输出置低 */
  60. #define GPIOA_SetBits( pin ) (R32_PA_OUT |= pin) /* GPIOA端口引脚输出置高 */
  61. #define GPIOB_ResetBits( pin ) (R32_PB_CLR |= pin) /* GPIOB端口引脚输出置低 */
  62. #define GPIOB_SetBits( pin ) (R32_PB_OUT |= pin) /* GPIOB端口引脚输出置高 */
  63. #define GPIOA_InverseBits( pin ) (R32_PA_OUT ^= pin) /* GPIOA端口引脚输出电平翻转 */
  64. #define GPIOB_InverseBits( pin ) (R32_PB_OUT ^= pin) /* GPIOB端口引脚输出电平翻转 */
  65. #define GPIOA_ReadPort() (R32_PA_PIN) /* GPIOA端口32位数据返回,低16位有效 */
  66. #define GPIOB_ReadPort() (R32_PB_PIN) /* GPIOB端口32位数据返回,低24位有效 */
  67. #define GPIOA_ReadPortPin( pin ) (R32_PA_PIN&pin) /* GPIOA端口引脚状态,0-引脚低电平,(!0)-引脚高电平 */
  68. #define GPIOB_ReadPortPin( pin ) (R32_PB_PIN&pin) /* GPIOB端口引脚状态,0-引脚低电平,(!0)-引脚高电平 */
  69. void GPIOA_ITModeCfg( UINT32 pin, GPIOITModeTpDef mode ); /* GPIOA引脚中断模式配置 */
  70. void GPIOB_ITModeCfg( UINT32 pin, GPIOITModeTpDef mode ); /* GPIOB引脚中断模式配置 */
  71. #define GPIOA_ReadITFlagPort() (R16_PA_INT_IF) /* 读取GPIOA端口中断标志状态 */
  72. #define GPIOB_ReadITFlagPort() (R16_PB_INT_IF) /* 读取GPIOB端口中断标志状态 */
  73. #define GPIOA_ReadITFlagBit( pin ) (R16_PA_INT_IF&pin) /* 读取GPIOA端口引脚中断标志状态 */
  74. #define GPIOB_ReadITFlagBit( pin ) (R16_PB_INT_IF&pin) /* 读取GPIOB端口引脚中断标志状态 */
  75. #define GPIOA_ClearITFlagBit( pin ) (R16_PA_INT_IF = pin) /* 清除GPIOA端口引脚中断标志状态 */
  76. #define GPIOB_ClearITFlagBit( pin ) (R16_PB_INT_IF = pin) /* 清除GPIOB端口引脚中断标志状态 */
  77. void GPIOPinRemap( UINT8 s, UINT16 perph ); /* 外设功能引脚映射 */
  78. void GPIOAGPPCfg( UINT8 s, UINT16 perph ); /* 模拟外设GPIO引脚功能控制 */
  79. #ifdef __cplusplus
  80. }
  81. #endif
  82. #endif // __CH57x_GPIO_H__