gpio.h 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. //*****************************************************************************
  2. //
  3. // gpio.h
  4. //
  5. // Defines and Macros for GPIO API.
  6. //
  7. // Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
  8. //
  9. //
  10. // Redistribution and use in source and binary forms, with or without
  11. // modification, are permitted provided that the following conditions
  12. // are met:
  13. //
  14. // Redistributions of source code must retain the above copyright
  15. // notice, this list of conditions and the following disclaimer.
  16. //
  17. // Redistributions in binary form must reproduce the above copyright
  18. // notice, this list of conditions and the following disclaimer in the
  19. // documentation and/or other materials provided with the
  20. // distribution.
  21. //
  22. // Neither the name of Texas Instruments Incorporated nor the names of
  23. // its contributors may be used to endorse or promote products derived
  24. // from this software without specific prior written permission.
  25. //
  26. // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  27. // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  28. // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  29. // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  30. // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  31. // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  32. // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  33. // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  34. // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  35. // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  36. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  37. //
  38. //*****************************************************************************
  39. #ifndef __GPIO_H__
  40. #define __GPIO_H__
  41. //*****************************************************************************
  42. //
  43. // If building with a C++ compiler, make all of the definitions in this header
  44. // have a C binding.
  45. //
  46. //*****************************************************************************
  47. #ifdef __cplusplus
  48. extern "C"
  49. {
  50. #endif
  51. //*****************************************************************************
  52. //
  53. // The following values define the bit field for the ucPins argument to several
  54. // of the APIs.
  55. //
  56. //*****************************************************************************
  57. #define GPIO_PIN_0 0x00000001 // GPIO pin 0
  58. #define GPIO_PIN_1 0x00000002 // GPIO pin 1
  59. #define GPIO_PIN_2 0x00000004 // GPIO pin 2
  60. #define GPIO_PIN_3 0x00000008 // GPIO pin 3
  61. #define GPIO_PIN_4 0x00000010 // GPIO pin 4
  62. #define GPIO_PIN_5 0x00000020 // GPIO pin 5
  63. #define GPIO_PIN_6 0x00000040 // GPIO pin 6
  64. #define GPIO_PIN_7 0x00000080 // GPIO pin 7
  65. //*****************************************************************************
  66. //
  67. // Values that can be passed to GPIODirModeSet as the ulPinIO parameter, and
  68. // returned from GPIODirModeGet.
  69. //
  70. //*****************************************************************************
  71. #define GPIO_DIR_MODE_IN 0x00000000 // Pin is a GPIO input
  72. #define GPIO_DIR_MODE_OUT 0x00000001 // Pin is a GPIO output
  73. //*****************************************************************************
  74. //
  75. // Values that can be passed to GPIOIntTypeSet as the ulIntType parameter, and
  76. // returned from GPIOIntTypeGet.
  77. //
  78. //*****************************************************************************
  79. #define GPIO_FALLING_EDGE 0x00000000 // Interrupt on falling edge
  80. #define GPIO_RISING_EDGE 0x00000004 // Interrupt on rising edge
  81. #define GPIO_BOTH_EDGES 0x00000001 // Interrupt on both edges
  82. #define GPIO_LOW_LEVEL 0x00000002 // Interrupt on low level
  83. #define GPIO_HIGH_LEVEL 0x00000006 // Interrupt on high level
  84. //*****************************************************************************
  85. //
  86. // Values that can be passed to GPIOIntEnable() and GPIOIntDisable() functions
  87. // in the ulIntFlags parameter.
  88. //
  89. //*****************************************************************************
  90. #define GPIO_INT_DMA 0x00000100
  91. #define GPIO_INT_PIN_0 0x00000001
  92. #define GPIO_INT_PIN_1 0x00000002
  93. #define GPIO_INT_PIN_2 0x00000004
  94. #define GPIO_INT_PIN_3 0x00000008
  95. #define GPIO_INT_PIN_4 0x00000010
  96. #define GPIO_INT_PIN_5 0x00000020
  97. #define GPIO_INT_PIN_6 0x00000040
  98. #define GPIO_INT_PIN_7 0x00000080
  99. //*****************************************************************************
  100. //
  101. // Prototypes for the APIs.
  102. //
  103. //*****************************************************************************
  104. extern void GPIODirModeSet(unsigned long ulPort, unsigned char ucPins,
  105. unsigned long ulPinIO);
  106. extern unsigned long GPIODirModeGet(unsigned long ulPort, unsigned char ucPin);
  107. extern void GPIOIntTypeSet(unsigned long ulPort, unsigned char ucPins,
  108. unsigned long ulIntType);
  109. extern void GPIODMATriggerEnable(unsigned long ulPort);
  110. extern void GPIODMATriggerDisable(unsigned long ulPort);
  111. extern unsigned long GPIOIntTypeGet(unsigned long ulPort, unsigned char ucPin);
  112. extern void GPIOIntEnable(unsigned long ulPort, unsigned long ulIntFlags);
  113. extern void GPIOIntDisable(unsigned long ulPort, unsigned long ulIntFlags);
  114. extern long GPIOIntStatus(unsigned long ulPort, tBoolean bMasked);
  115. extern void GPIOIntClear(unsigned long ulPort, unsigned long ulIntFlags);
  116. extern void GPIOIntRegister(unsigned long ulPort,
  117. void (*pfnIntHandler)(void));
  118. extern void GPIOIntUnregister(unsigned long ulPort);
  119. extern long GPIOPinRead(unsigned long ulPort, unsigned char ucPins);
  120. extern void GPIOPinWrite(unsigned long ulPort, unsigned char ucPins,
  121. unsigned char ucVal);
  122. //*****************************************************************************
  123. //
  124. // Mark the end of the C bindings section for C++ compilers.
  125. //
  126. //*****************************************************************************
  127. #ifdef __cplusplus
  128. }
  129. #endif
  130. #endif // __GPIO_H__