Introduction
The GPIO module allows software to control the pins of the device directly if the IOC module has been configured to route the GPIO signal to a physical pin (called DIO). Alternatively, pins can be hardware controlled by other peripheral modules. For more information about the IOC module, how to configure physical pins, and how to select between software controlled and hardware controlled, see the IOC API.
The System CPU can access the GPIO module to read the value of any DIO of the device and if the IOC module has been configured such that one or more DIOs are GPIO controlled (software controlled) the System CPU can write these DIOs through the GPIO module.
The IOC module can also be configured to generate events on edge detection and these events can be read and cleared in the GPIO module by the System CPU.
API
The API functions can be grouped like this:
Set and get direction of DIO (output enable):
Write DIO (requires IOC to be configured for GPIO usage):
Set, clear, or toggle DIO (requires IOC to be configured for GPIO usage):
Read DIO (even if IOC is NOT configured for GPIO usage; however, the DIO must be configured for input enable in IOC):
Read or clear events (even if IOC is NOT configured for GPIO usage; however, the DIO must be configured for input enable in IOC):
The IOC API provides two functions for easy configuration of DIOs as GPIO enabled using typical settings. They also serve as examples on how to configure the IOC and GPIO modules for GPIO usage:
static void GPIO_clearDio |
( |
uint32_t |
dioNumber | ) |
|
|
inlinestatic |
static void GPIO_clearEventDio |
( |
uint32_t |
dioNumber | ) |
|
|
inlinestatic |
static void GPIO_clearEventMultiDio |
( |
uint32_t |
dioMask | ) |
|
|
inlinestatic |
Clears the IO event status on the specified DIOs.
- Parameters
-
dioMask | is the bit-mask representation of the DIOs on which to clear the events status. The parameter must be a bitwise OR'ed combination of the following:
|
- Returns
- None
- See also
- GPIO_clearEventDio(), GPIO_getEventDio(), GPIO_getEventMultiDio()
#define GPIO_DIO_ALL_MASK
Definition: gpio.h:141
#define ASSERT(expr)
Definition: debug.h:73
static void GPIO_clearMultiDio |
( |
uint32_t |
dioMask | ) |
|
|
inlinestatic |
Clears the specified DIOs to 0 (low).
- Parameters
-
dioMask | is the bit-mask representation of the DIOs to clear. The parameter must be a bitwise OR'ed combination of the following:
|
- Returns
- None
- See also
- GPIO_clearDio(), GPIO_setDio(), GPIO_setMultiDio()
#define GPIO_DIO_ALL_MASK
Definition: gpio.h:141
#define ASSERT(expr)
Definition: debug.h:73
static uint32_t GPIO_getEventDio |
( |
uint32_t |
dioNumber | ) |
|
|
inlinestatic |
static uint32_t GPIO_getEventMultiDio |
( |
uint32_t |
dioMask | ) |
|
|
inlinestatic |
Gets the event status of the specified DIOs.
This function returns the event status for multiple DIOs. The value returned is not shifted and hence matches the corresponding dioMask bits.
- Parameters
-
dioMask | is the bit-mask representation of the DIOs to get the event status from (0-31). The parameter must be a bitwise OR'ed combination of the following:
|
- Returns
- Returns a bit vector with the current event status corresponding to the specified DIOs.
- 0 : Corresponding DIO has no triggered event.
- 1 : Corresponding DIO has a triggered event.
- See also
- GPIO_getEventDio(), GPIO_clearEventDio(), GPIO_clearEventMultiDio()
#define GPIO_DIO_ALL_MASK
Definition: gpio.h:141
#define ASSERT(expr)
Definition: debug.h:73
static uint32_t GPIO_getOutputEnableDio |
( |
uint32_t |
dioNumber | ) |
|
|
inlinestatic |
Gets the output enable status of a specific DIO.
This function returns the output enable status for the specified DIO. The DIO can be configured as either input or output under software control.
- Parameters
-
dioNumber | specifies the DIO to get the output enable setting from (0-31). |
- Returns
- Returns one of the enumerated data types (0 or 1):
- See also
- GPIO_getOutputEnableMultiDio(), GPIO_setOutputEnableDio(), GPIO_setOutputEnableMultiDio()
425 ASSERT( dioNumberLegal( dioNumber ));
#define ASSERT(expr)
Definition: debug.h:73
static uint32_t GPIO_getOutputEnableMultiDio |
( |
uint32_t |
dioMask | ) |
|
|
inlinestatic |
Gets the output enable setting of the specified DIOs.
This function returns the output enable setting for multiple DIOs. The value returned is not shifted and hence matches the corresponding dioMask bits.
- Parameters
-
dioMask | is the bit-mask representation of the DIOs to return the output enable settings from. The parameter must be a bitwise OR'ed combination of the following:
|
- Returns
- Returns the output enable setting for multiple DIOs as a bit vector corresponding to the dioMask bits.
- 0 : Corresponding DIO is configured with output disabled.
- 1 : Corresponding DIO is configured with output enabled.
- See also
- GPIO_getOutputEnableDio(), GPIO_setOutputEnableDio(), GPIO_setOutputEnableMultiDio()
#define GPIO_DIO_ALL_MASK
Definition: gpio.h:141
#define ASSERT(expr)
Definition: debug.h:73
static uint32_t GPIO_readDio |
( |
uint32_t |
dioNumber | ) |
|
|
inlinestatic |
static uint32_t GPIO_readMultiDio |
( |
uint32_t |
dioMask | ) |
|
|
inlinestatic |
Reads the input value for the specified DIOs.
This function returns the input value for multiple DIOs. The value returned is not shifted and hence matches the corresponding dioMask bits.
- Parameters
-
dioMask | is the bit-mask representation of the DIOs to read. The parameter must be a bitwise OR'ed combination of the following:
|
- Returns
- Returns a bit vector reflecting the input value of the corresponding DIOs.
- 0 : Corresponding DIO is low.
- 1 : Corresponding DIO is high.
- See also
- GPIO_readDio(), GPIO_writeDio(), GPIO_writeMultiDio()
#define GPIO_DIO_ALL_MASK
Definition: gpio.h:141
#define ASSERT(expr)
Definition: debug.h:73
static void GPIO_setDio |
( |
uint32_t |
dioNumber | ) |
|
|
inlinestatic |
static void GPIO_setMultiDio |
( |
uint32_t |
dioMask | ) |
|
|
inlinestatic |
Sets the specified DIOs to 1 (high).
- Parameters
-
dioMask | is the bit-mask representation of the DIOs to set. The parameter must be a bitwise OR'ed combination of the following:
|
- Returns
- None
- See also
- GPIO_setDio(), GPIO_clearDio(), GPIO_clearMultiDio()
#define GPIO_DIO_ALL_MASK
Definition: gpio.h:141
#define ASSERT(expr)
Definition: debug.h:73
static void GPIO_setOutputEnableDio |
( |
uint32_t |
dioNumber, |
|
|
uint32_t |
outputEnableValue |
|
) |
| |
|
inlinestatic |
Sets output enable of a specific DIO.
This function sets the GPIO output enable bit for the specified DIO. The DIO can be configured as either input or output under software control.
- Parameters
-
dioNumber | specifies the DIO to configure (0-31). |
outputEnableValue | specifies the output enable setting of the specified DIO:
|
- Returns
- None
- See also
- GPIO_setOutputEnableMultiDio(), GPIO_getOutputEnableDio(), GPIO_getOutputEnableMultiDio()
Referenced by IOCPinTypeGpioInput(), and IOCPinTypeGpioOutput().
482 ASSERT( dioNumberLegal( dioNumber ));
#define GPIO_OUTPUT_ENABLE
Definition: gpio.h:151
#define ASSERT(expr)
Definition: debug.h:73
#define GPIO_OUTPUT_DISABLE
Definition: gpio.h:150
static void GPIO_setOutputEnableMultiDio |
( |
uint32_t |
dioMask, |
|
|
uint32_t |
bitVectoredOutputEnable |
|
) |
| |
|
inlinestatic |
Configures the output enable setting for all specified DIOs.
This function configures the output enable setting for the specified DIOs. The output enable setting must be shifted so it matches the corresponding dioMask bits. The DIOs can be configured as either an input or output under software control.
- Note
- Note that this is a read-modify-write operation and hence not atomic.
- Parameters
-
dioMask | is the bit-mask representation of the DIOs on which to configure the output enable setting. The parameter must be a bitwise OR'ed combination of the following:
|
bitVectoredOutputEnable | holds the output enable setting the corresponding DIO-bits:
- 0 : Corresponding DIO is configured with output disabled.
- 1 : Corresponding DIO is configured with output enabled.
|
- Returns
- None
- See also
- GPIO_setOutputEnableDio(), GPIO_getOutputEnableDio(), GPIO_getOutputEnableMultiDio()
522 ( bitVectoredOutputEnable & dioMask );
#define GPIO_DIO_ALL_MASK
Definition: gpio.h:141
#define ASSERT(expr)
Definition: debug.h:73
static void GPIO_toggleDio |
( |
uint32_t |
dioNumber | ) |
|
|
inlinestatic |
Toggles a specific DIO.
- Parameters
-
dioNumber | specifies the DIO to toggle (0-31). |
- Returns
- None
- See also
- GPIO_toggleMultiDio()
374 ASSERT( dioNumberLegal( dioNumber ));
#define ASSERT(expr)
Definition: debug.h:73
static void GPIO_toggleMultiDio |
( |
uint32_t |
dioMask | ) |
|
|
inlinestatic |
Toggles the specified DIOs.
- Parameters
-
dioMask | is the bit-mask representation of the DIOs to toggle. The parameter must be a bitwise OR'ed combination of the following:
|
- Returns
- None
- See also
- GPIO_toggleDio()
#define GPIO_DIO_ALL_MASK
Definition: gpio.h:141
#define ASSERT(expr)
Definition: debug.h:73
static void GPIO_writeDio |
( |
uint32_t |
dioNumber, |
|
|
uint32_t |
value |
|
) |
| |
|
inlinestatic |
Writes a value to a specific DIO.
- Parameters
-
dioNumber | specifies the DIO to update (0-31). |
value | specifies the value to write
- 0 : Logic zero (low)
- 1 : Logic one (high)
|
- Returns
- None
- See also
- GPIO_writeMultiDio(), GPIO_readDio(), GPIO_readMultiDio()
228 ASSERT( dioNumberLegal( dioNumber ));
229 ASSERT(( value == 0 ) || ( value == 1 ));
#define ASSERT(expr)
Definition: debug.h:73
static void GPIO_writeMultiDio |
( |
uint32_t |
dioMask, |
|
|
uint32_t |
bitVectoredValue |
|
) |
| |
|
inlinestatic |
Writes masked data to the specified DIOs.
Enables for writing multiple bits simultaneously. The value to write must be shifted so it matches the corresponding dioMask bits.
- Note
- Note that this is a read-modify-write operation and hence not atomic.
- Parameters
-
dioMask | is the bit-mask representation of the DIOs to write. The parameter must be a bitwise OR'ed combination of the following:
|
bitVectoredValue | holds the value to be written to the corresponding DIO-bits. |
- Returns
- None
- See also
- GPIO_writeDio(), GPIO_readDio(), GPIO_readMultiDio()
264 ( bitVectoredValue & dioMask );
#define GPIO_DIO_ALL_MASK
Definition: gpio.h:141
#define ASSERT(expr)
Definition: debug.h:73
#define GPIO_DIO_0_MASK 0x00000001 |
#define GPIO_DIO_10_MASK 0x00000400 |
#define GPIO_DIO_11_MASK 0x00000800 |
#define GPIO_DIO_12_MASK 0x00001000 |
#define GPIO_DIO_13_MASK 0x00002000 |
#define GPIO_DIO_14_MASK 0x00004000 |
#define GPIO_DIO_15_MASK 0x00008000 |
#define GPIO_DIO_16_MASK 0x00010000 |
#define GPIO_DIO_17_MASK 0x00020000 |
#define GPIO_DIO_18_MASK 0x00040000 |
#define GPIO_DIO_19_MASK 0x00080000 |
#define GPIO_DIO_1_MASK 0x00000002 |
#define GPIO_DIO_20_MASK 0x00100000 |
#define GPIO_DIO_21_MASK 0x00200000 |
#define GPIO_DIO_22_MASK 0x00400000 |
#define GPIO_DIO_23_MASK 0x00800000 |
#define GPIO_DIO_24_MASK 0x01000000 |
#define GPIO_DIO_25_MASK 0x02000000 |
#define GPIO_DIO_26_MASK 0x04000000 |
#define GPIO_DIO_27_MASK 0x08000000 |
#define GPIO_DIO_28_MASK 0x10000000 |
#define GPIO_DIO_29_MASK 0x20000000 |
#define GPIO_DIO_2_MASK 0x00000004 |
#define GPIO_DIO_30_MASK 0x40000000 |
#define GPIO_DIO_31_MASK 0x80000000 |
#define GPIO_DIO_3_MASK 0x00000008 |
#define GPIO_DIO_4_MASK 0x00000010 |
#define GPIO_DIO_5_MASK 0x00000020 |
#define GPIO_DIO_6_MASK 0x00000040 |
#define GPIO_DIO_7_MASK 0x00000080 |
#define GPIO_DIO_8_MASK 0x00000100 |
#define GPIO_DIO_9_MASK 0x00000200 |
#define GPIO_DIO_ALL_MASK 0xFFFFFFFF |
#define GPIO_OUTPUT_DISABLE 0x00000000 |
#define GPIO_OUTPUT_ENABLE 0x00000001 |