CC26xx Driver Library
[gpio] General Purpose I/O

Functions

static uint32_t GPIO_readDio (uint32_t dioNumber)
 Reads a specific DIO. More...
 
static uint32_t GPIO_readMultiDio (uint32_t dioMask)
 Reads the input value for the specified DIOs. More...
 
static void GPIO_writeDio (uint32_t dioNumber, uint32_t value)
 Writes a value to a specific DIO. More...
 
static void GPIO_writeMultiDio (uint32_t dioMask, uint32_t bitVectoredValue)
 Writes masked data to the specified DIOs. More...
 
static void GPIO_setDio (uint32_t dioNumber)
 Sets a specific DIO to 1 (high). More...
 
static void GPIO_setMultiDio (uint32_t dioMask)
 Sets the specified DIOs to 1 (high). More...
 
static void GPIO_clearDio (uint32_t dioNumber)
 Clears a specific DIO to 0 (low). More...
 
static void GPIO_clearMultiDio (uint32_t dioMask)
 Clears the specified DIOs to 0 (low). More...
 
static void GPIO_toggleDio (uint32_t dioNumber)
 Toggles a specific DIO. More...
 
static void GPIO_toggleMultiDio (uint32_t dioMask)
 Toggles the specified DIOs. More...
 
static uint32_t GPIO_getOutputEnableDio (uint32_t dioNumber)
 Gets the output enable status of a specific DIO. More...
 
static uint32_t GPIO_getOutputEnableMultiDio (uint32_t dioMask)
 Gets the output enable setting of the specified DIOs. More...
 
static void GPIO_setOutputEnableDio (uint32_t dioNumber, uint32_t outputEnableValue)
 Sets output enable of a specific DIO. More...
 
static void GPIO_setOutputEnableMultiDio (uint32_t dioMask, uint32_t bitVectoredOutputEnable)
 Configures the output enable setting for all specified DIOs. More...
 
static uint32_t GPIO_getEventDio (uint32_t dioNumber)
 Gets the event status of a specific DIO. More...
 
static uint32_t GPIO_getEventMultiDio (uint32_t dioMask)
 Gets the event status of the specified DIOs. More...
 
static void GPIO_clearEventDio (uint32_t dioNumber)
 Clears the IO event status of a specific DIO. More...
 
static void GPIO_clearEventMultiDio (uint32_t dioMask)
 Clears the IO event status on the specified DIOs. More...
 

Detailed Description

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:

Function Documentation

static void GPIO_clearDio ( uint32_t  dioNumber)
inlinestatic

Clears a specific DIO to 0 (low).

Parameters
dioNumberspecifies the DIO to clear (0-31).
Returns
None
See also
GPIO_clearMultiDio(), GPIO_setDio(), GPIO_setMultiDio()
317 {
318  // Check the arguments.
319  ASSERT( dioNumberLegal( dioNumber ));
320 
321  // Clear the specified DIO.
322  HWREG( GPIO_BASE + GPIO_O_DOUTCLR31_0 ) = ( 1 << dioNumber );
323 }
#define ASSERT(expr)
Definition: debug.h:74
static void GPIO_clearEventDio ( uint32_t  dioNumber)
inlinestatic

Clears the IO event status of a specific DIO.

Parameters
dioNumberspecifies the DIO on which to clear the event status (0-31).
Returns
None
See also
GPIO_clearEventMultiDio(), GPIO_getEventDio(), GPIO_getEventMultiDio()

Referenced by IOCIntClear().

583 {
584  // Check the arguments.
585  ASSERT( dioNumberLegal( dioNumber ));
586 
587  // Clear the event status for the specified DIO.
588  HWREG( GPIO_BASE + GPIO_O_EVFLAGS31_0 ) = ( 1 << dioNumber );
589 }
#define ASSERT(expr)
Definition: debug.h:74
static void GPIO_clearEventMultiDio ( uint32_t  dioMask)
inlinestatic

Clears the IO event status on the specified DIOs.

Parameters
dioMaskis 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()
609 {
610  // Check the arguments.
611  ASSERT( dioMask & GPIO_DIO_ALL_MASK );
612 
613  // Clear the event status for the specified DIOs.
614  HWREG( GPIO_BASE + GPIO_O_EVFLAGS31_0 ) = dioMask;
615 }
#define GPIO_DIO_ALL_MASK
Definition: gpio.h:132
#define ASSERT(expr)
Definition: debug.h:74
static void GPIO_clearMultiDio ( uint32_t  dioMask)
inlinestatic

Clears the specified DIOs to 0 (low).

Parameters
dioMaskis 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()
342 {
343  // Check the arguments.
344  ASSERT( dioMask & GPIO_DIO_ALL_MASK );
345 
346  // Clear the DIOs.
347  HWREG( GPIO_BASE + GPIO_O_DOUTCLR31_0 ) = dioMask;
348 }
#define GPIO_DIO_ALL_MASK
Definition: gpio.h:132
#define ASSERT(expr)
Definition: debug.h:74
static uint32_t GPIO_getEventDio ( uint32_t  dioNumber)
inlinestatic

Gets the event status of a specific DIO.

Parameters
dioNumberspecifies the DIO to get the event status from (0-31).
Returns
Returns the current event status on the specified DIO.
  • 0 : Non-triggered event.
  • 1 : Triggered event.
See also
GPIO_getEventMultiDio(), GPIO_clearEventDio(), GPIO_clearEventMultiDio()

Referenced by IOCIntStatus().

531 {
532  // Check the arguments.
533  ASSERT( dioNumberLegal( dioNumber ));
534 
535  // Return the event status for the specified DIO.
536  return (( HWREG( GPIO_BASE + GPIO_O_EVFLAGS31_0 ) >> dioNumber ) & 1 );
537 }
#define ASSERT(expr)
Definition: debug.h:74
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
dioMaskis 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 correspondig 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()
562 {
563  // Check the arguments.
564  ASSERT( dioMask & GPIO_DIO_ALL_MASK );
565 
566  // Return the event status for the specified DIO.
567  return ( HWREG( GPIO_BASE + GPIO_O_EVFLAGS31_0 ) & dioMask );
568 }
#define GPIO_DIO_ALL_MASK
Definition: gpio.h:132
#define ASSERT(expr)
Definition: debug.h:74
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
dioNumberspecifies 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()
414 {
415  // Check the arguments.
416  ASSERT( dioNumberLegal( dioNumber ));
417 
418  // Return the output enable status for the specified DIO.
419  return (( HWREG( GPIO_BASE + GPIO_O_DOE31_0 ) >> dioNumber ) & 1 );
420 }
#define ASSERT(expr)
Definition: debug.h:74
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
dioMaskis 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()
444 {
445  // Check the arguments.
446  ASSERT( dioMask & GPIO_DIO_ALL_MASK );
447 
448  // Return the output enable value for the specified DIOs.
449  return ( HWREG( GPIO_BASE + GPIO_O_DOE31_0 ) & dioMask );
450 }
#define GPIO_DIO_ALL_MASK
Definition: gpio.h:132
#define ASSERT(expr)
Definition: debug.h:74
static uint32_t GPIO_readDio ( uint32_t  dioNumber)
inlinestatic

Reads a specific DIO.

Parameters
dioNumberspecifies the DIO to read (0-31).
Returns
Returns 0 or 1 reflecting the input value of the specified DIO.
See also
GPIO_readMultiDio(), GPIO_writeDio(), GPIO_writeMultiDio()
163 {
164  // Check the arguments.
165  ASSERT( dioNumberLegal( dioNumber ));
166 
167  // Return the input value from the specified DIO.
168  return (( HWREG( GPIO_BASE + GPIO_O_DIN31_0 ) >> dioNumber ) & 1 );
169 }
#define ASSERT(expr)
Definition: debug.h:74
static uint32_t GPIO_readMultiDio ( uint32_t  dioMask)
inlinestatic

Reads the input value for the specified DIOs.

This function returns the the input value for multiple DIOs. The value returned is not shifted and hence matches the corresponding dioMask bits.

Parameters
dioMaskis 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()
193 {
194  // Check the arguments.
195  ASSERT( dioMask & GPIO_DIO_ALL_MASK );
196 
197  // Return the input value from the specified DIOs.
198  return ( HWREG( GPIO_BASE + GPIO_O_DIN31_0 ) & dioMask );
199 }
#define GPIO_DIO_ALL_MASK
Definition: gpio.h:132
#define ASSERT(expr)
Definition: debug.h:74
static void GPIO_setDio ( uint32_t  dioNumber)
inlinestatic

Sets a specific DIO to 1 (high).

Parameters
dioNumberspecifies the DIO to set (0-31).
Returns
None
See also
GPIO_setMultiDio(), GPIO_clearDio(), GPIO_clearMultiDio()
271 {
272  // Check the arguments.
273  ASSERT( dioNumberLegal( dioNumber ));
274 
275  // Set the specified DIO.
276  HWREG( GPIO_BASE + GPIO_O_DOUTSET31_0 ) = ( 1 << dioNumber );
277 }
#define ASSERT(expr)
Definition: debug.h:74
static void GPIO_setMultiDio ( uint32_t  dioMask)
inlinestatic

Sets the specified DIOs to 1 (high).

Parameters
dioMaskis 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()
296 {
297  // Check the arguments.
298  ASSERT( dioMask & GPIO_DIO_ALL_MASK );
299 
300  // Set the DIOs.
301  HWREG( GPIO_BASE + GPIO_O_DOUTSET31_0 ) = dioMask;
302 }
#define GPIO_DIO_ALL_MASK
Definition: gpio.h:132
#define ASSERT(expr)
Definition: debug.h:74
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
dioNumberspecifies the DIO to configure (0-31).
outputEnableValuespecifies the output enable setting of the specified DIO:
Returns
None
See also
GPIO_setOutputEnableMultiDio(), GPIO_getOutputEnableDio(), GPIO_getOutputEnableMultiDio()

Referenced by IOCPinTypeGpioInput(), and IOCPinTypeGpioOutput().

471 {
472  // Check the arguments.
473  ASSERT( dioNumberLegal( dioNumber ));
474  ASSERT(( outputEnableValue == GPIO_OUTPUT_DISABLE ) ||
475  ( outputEnableValue == GPIO_OUTPUT_ENABLE ) );
476 
477  // Update the output enable bit for the specified DIO.
478  HWREGBITW( GPIO_BASE + GPIO_O_DOE31_0, dioNumber ) = outputEnableValue;
479 }
#define GPIO_OUTPUT_ENABLE
Definition: gpio.h:142
#define ASSERT(expr)
Definition: debug.h:74
#define GPIO_OUTPUT_DISABLE
Definition: gpio.h:141
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
dioMaskis 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:
bitVectoredOutputEnableholds 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()
507 {
508  // Check the arguments.
509  ASSERT( dioMask & GPIO_DIO_ALL_MASK );
510 
511  HWREG( GPIO_BASE + GPIO_O_DOE31_0 ) =
512  ( HWREG( GPIO_BASE + GPIO_O_DOE31_0 ) & ~dioMask ) |
513  ( bitVectoredOutputEnable & dioMask );
514 }
#define GPIO_DIO_ALL_MASK
Definition: gpio.h:132
#define ASSERT(expr)
Definition: debug.h:74
static void GPIO_toggleDio ( uint32_t  dioNumber)
inlinestatic

Toggles a specific DIO.

Parameters
dioNumberspecifies the DIO to toggle (0-31).
Returns
None
See also
GPIO_toggleMultiDio()
363 {
364  // Check the arguments.
365  ASSERT( dioNumberLegal( dioNumber ));
366 
367  // Toggle the specified DIO.
368  HWREG( GPIO_BASE + GPIO_O_DOUTTGL31_0 ) = ( 1 << dioNumber );
369 }
#define ASSERT(expr)
Definition: debug.h:74
static void GPIO_toggleMultiDio ( uint32_t  dioMask)
inlinestatic

Toggles the specified DIOs.

Parameters
dioMaskis 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()
388 {
389  // Check the arguments.
390  ASSERT( dioMask & GPIO_DIO_ALL_MASK );
391 
392  // Toggle the DIOs.
393  HWREG( GPIO_BASE + GPIO_O_DOUTTGL31_0 ) = dioMask;
394 }
#define GPIO_DIO_ALL_MASK
Definition: gpio.h:132
#define ASSERT(expr)
Definition: debug.h:74
static void GPIO_writeDio ( uint32_t  dioNumber,
uint32_t  value 
)
inlinestatic

Writes a value to a specific DIO.

Parameters
dioNumberspecifies the DIO to update (0-31).
valuespecifies the value to write
  • 0 : Logic zero (low)
  • 1 : Logic one (high)
Returns
None
See also
GPIO_writeMultiDio(), GPIO_readDio(), GPIO_readMultiDio()
217 {
218  // Check the arguments.
219  ASSERT( dioNumberLegal( dioNumber ));
220  ASSERT(( value == 0 ) || ( value == 1 ));
221 
222  // Write 0 or 1 to the byte indexed DOUT map
223  HWREGB( GPIO_BASE + dioNumber ) = value;
224 }
#define ASSERT(expr)
Definition: debug.h:74
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
dioMaskis the bit-mask representation of the DIOs to write. The parameter must be a bitwise OR'ed combination of the following:
bitVectoredValueholds the value to be written to the corresponding DIO-bits.
Returns
None
See also
GPIO_writeDio(), GPIO_readDio(), GPIO_readMultiDio()
249 {
250  // Check the arguments.
251  ASSERT( dioMask & GPIO_DIO_ALL_MASK );
252 
253  HWREG( GPIO_BASE + GPIO_O_DOUT31_0 ) =
254  ( HWREG( GPIO_BASE + GPIO_O_DOUT31_0 ) & ~dioMask ) |
255  ( bitVectoredValue & dioMask );
256 }
#define GPIO_DIO_ALL_MASK
Definition: gpio.h:132
#define ASSERT(expr)
Definition: debug.h:74

Macro Definition Documentation

#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_OUTPUT_DISABLE   0x00000000
#define GPIO_OUTPUT_ENABLE   0x00000001