t_gpio.c 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. #include "t_define.h"
  2. #if 0
  3. #include "t_bk3231sf.h"
  4. #include "t_icu.h"
  5. //#include "useruart.h"
  6. //#include "userpower.h"
  7. #include "t_gpio.h"
  8. // #include "useradc.h"
  9. static GPIO_INT_HANDLE_CB_PFN gpioIntHandleCbPfn = NULL;
  10. void GpioGenCfg(uint8 port, uint8 bitoffset, uint32 mode, uint32 io, uint32 pull)
  11. {
  12. uint32 *preg, regbitmask, temp;
  13. preg = (uint32 *)(REG_GPIO_BASE+(port<<3));
  14. regbitmask = (BM_GPIO_MODE<<bitoffset)|
  15. (BM_GPIO_IO_OUT_NOR<<bitoffset)|
  16. (BM_GPIO_PULL_UP<<bitoffset)|
  17. (BM_GPIO_PULL_DOWN<<bitoffset);
  18. temp = (mode<<bitoffset)|
  19. ((io&BM_GPIO_IO_OUT_NOR)<<bitoffset)|
  20. (pull<<bitoffset);
  21. *preg = SET_VALUE(*preg, regbitmask, temp);
  22. preg = (uint32 *)(REG_GPIO_BASE+((port<<3)+4));
  23. regbitmask = (BM_GPIO_IO_IN<<bitoffset);
  24. temp = ((io&BM_GPIO_IO_IN)<<bitoffset);
  25. *preg = SET_VALUE(*preg, regbitmask, temp);
  26. }
  27. void GpioModeCfg(uint8 port, uint8 bitoffset, uint32 mode)
  28. {
  29. uint32 *preg, regbitmask, temp;
  30. preg = (uint32 *)(REG_GPIO_BASE+(port<<3));
  31. regbitmask = (BM_GPIO_MODE<<bitoffset);
  32. temp = (mode<<bitoffset);
  33. *preg = SET_VALUE(*preg, regbitmask, temp);
  34. }
  35. void GpioIoCfg(uint8 port, uint8 bitoffset, uint32 io)
  36. {
  37. uint32 *preg, regbitmask, temp;
  38. preg = (uint32 *)(REG_GPIO_BASE+(port<<3));
  39. regbitmask = (BM_GPIO_IO_OUT_NOR<<bitoffset);
  40. temp = ((io&BM_GPIO_IO_OUT_NOR)<<bitoffset);
  41. *preg = SET_VALUE(*preg, regbitmask, temp);
  42. preg = (uint32 *)(REG_GPIO_BASE+((port<<3)+4));
  43. regbitmask = (BM_GPIO_IO_IN<<bitoffset);
  44. temp = ((io&BM_GPIO_IO_IN)<<bitoffset);
  45. *preg = SET_VALUE(*preg, regbitmask, temp);
  46. }
  47. void GpioPullCfg(uint8 port, uint8 bitoffset, uint32 pull)
  48. {
  49. uint32 *preg, regbitmask, temp;
  50. preg = (uint32 *)(REG_GPIO_BASE+(port<<3));
  51. regbitmask = (BM_GPIO_PULL_UP<<bitoffset)|
  52. (BM_GPIO_PULL_DOWN<<bitoffset);
  53. temp = (pull<<bitoffset);
  54. *preg = SET_VALUE(*preg, regbitmask, temp);
  55. }
  56. void GpioSetOutNegate(uint8 port, uint8 bitoffset)
  57. {
  58. uint32 *preg;
  59. preg = (uint32 *)(REG_GPIO_BASE+((port<<3)+4));
  60. *preg = NEGATE(*preg,BM_GPIO_OUT_DATA<<bitoffset);
  61. }
  62. void GpioSetOut(uint8 port, uint8 bitoffset, uint32 out)
  63. {
  64. uint32 *preg;
  65. preg = (uint32 *)(REG_GPIO_BASE+((port<<3)+4));
  66. *preg = SET_VALUE(*preg, BM_GPIO_OUT_DATA<<bitoffset, (out<<BO_GPIO_OUT_DATA)<<bitoffset);
  67. }
  68. bool8 GpioGetIn(uint8 port, uint8 bitoffset)
  69. {
  70. uint32 *preg;
  71. uint32 temp;
  72. preg = (uint32 *)(REG_GPIO_BASE+((port<<3)+4));
  73. temp = ((*preg) & (BM_GPIO_IN_DATA<<bitoffset)) >> bitoffset >> BO_GPIO_IN_DATA;
  74. return (bool8)temp;
  75. }
  76. void GpioIntCfg(uint8 port, uint8 bitoffset, uint32 interruptenable, uint32 trigedge)
  77. {
  78. REG_GPIO0T3_INT_EN = SET_VALUE(REG_GPIO0T3_INT_EN,
  79. 1ul<<((port<<3)+bitoffset),
  80. interruptenable<<((port<<3)+bitoffset));
  81. REG_GPIO0T3_INT_EDGE = SET_VALUE(REG_GPIO0T3_INT_EDGE,
  82. 1ul<<((port<<3)+bitoffset),
  83. trigedge<<((port<<3)+bitoffset));
  84. }
  85. void GpioIntEnCfg(uint8 port, uint8 bitoffset, uint32 interruptenable)
  86. {
  87. REG_GPIO0T3_INT_EN = SET_VALUE(REG_GPIO0T3_INT_EN,
  88. 1ul<<((port<<3)+bitoffset),
  89. interruptenable<<((port<<3)+bitoffset));
  90. }
  91. void GpioInTrigedgeCfg(uint8 port, uint8 bitoffset, uint32 trigedge)
  92. {
  93. REG_GPIO0T3_INT_EDGE = SET_VALUE(REG_GPIO0T3_INT_EDGE,
  94. 1ul<<((port<<3)+bitoffset),
  95. trigedge<<((port<<3)+bitoffset));
  96. }
  97. void GpioDeepWakeupCfg(uint8 port, uint8 bitoffset, uint32 wakeupenable)
  98. {
  99. REG_ICU_GPIO0T3_DEEP_WAKEUP_EN = SET_VALUE(REG_ICU_GPIO0T3_DEEP_WAKEUP_EN,
  100. (1ul<<((port<<3))<<bitoffset),
  101. ((wakeupenable<<(port<<3))<<bitoffset));
  102. }
  103. uint32 GpioGetInitSta(void)
  104. {
  105. return REG_GPIO0T3_INT_STA;
  106. }
  107. void GpioClearInitSta(uint32 gpiointstate)
  108. {
  109. REG_GPIO0T3_INT_STA = gpiointstate;
  110. }
  111. void GpioIntHandleCbCfg(GPIO_INT_HANDLE_CB_PFN cbpfn)
  112. {
  113. gpioIntHandleCbPfn = cbpfn;
  114. }
  115. void GpioIntHandle(void)
  116. {
  117. // uint32 gpiointstate = REG_GPIO0T3_INT_STA;
  118. // REG_GPIO0T3_INT_STA = gpiointstate;
  119. // ir_callback();
  120. // if(gpioIntHandleCbPfn != NULL)
  121. // {
  122. // (*gpioIntHandleCbPfn)(gpiointstate);
  123. // }
  124. }
  125. #endif