43#define GPIO_PORT_SHIFT 3                               
   44#define GPIO_BITS_PER_PORT ( 1 << GPIO_PORT_SHIFT )     
   45#define GPIO_BIT_MASK      ( GPIO_BITS_PER_PORT - 1 )   
   54#define PIN_MASK(n) ( 1 << (n) ) 
   63#define GPIO_NUM_TO_PORT_NUM(gpio_num) ( (gpio_num) >> GPIO_PORT_SHIFT ) 
   72#define GPIO_BIT_NUM(gpio_num) ( (gpio_num) & GPIO_BIT_MASK ) 
   82#define GPIO_PXX_TO_NUM(port_num, bit_num) ( ((port_num) << GPIO_PORT_SHIFT) | (bit_num) ) 
   91#define GPIO_NUM_TO_DEV(gpio_num) ( GPIO_A + GPIO_NUM_TO_PORT_NUM(gpio_num) ) 
   98#define gpio_hardware_control(gpio_num) ( GPIO_NUM_TO_DEV(gpio_num)->AFSEL |= PIN_MASK(GPIO_BIT_NUM(gpio_num)) ) 
  105#define gpio_software_control(gpio_num) ( GPIO_NUM_TO_DEV(gpio_num)->AFSEL &= ~PIN_MASK(GPIO_BIT_NUM(gpio_num)) ) 
  112#define gpio_dir_output(gpio_num) ( GPIO_NUM_TO_DEV(gpio_num)->DIR |= PIN_MASK(GPIO_BIT_NUM(gpio_num)) ) 
  119#define gpio_dir_input(gpio_num) ( GPIO_NUM_TO_DEV(gpio_num)->DIR &= ~PIN_MASK(GPIO_BIT_NUM(gpio_num)) ) 
  126#define cc2538_gpio_read(gpio_num) ( (GPIO_NUM_TO_DEV(gpio_num)->DATA >> GPIO_BIT_NUM(gpio_num)) & 1 ) 
  133#define cc2538_gpio_clear(gpio_num) ( GPIO_NUM_TO_DEV(gpio_num)->DATA &= ~PIN_MASK(GPIO_BIT_NUM(gpio_num)) ) 
  210#define GPIO_BASE           (0x400d9000) 
  216#define GPIO_PORTNUM_SHIFT  (12U)            
  217#define GPIO_PORTNUM_MASK   (0x00007000)     
  218#define GPIO_PIN_MASK       (0x00000007)     
  219#define GPIO_PORT_MASK      (0xfffff000)     
  227#define GPIO_A ((cc2538_gpio_t *)0x400d9000)     
  228#define GPIO_B ((cc2538_gpio_t *)0x400da000)     
  229#define GPIO_C ((cc2538_gpio_t *)0x400db000)     
  230#define GPIO_D ((cc2538_gpio_t *)0x400dc000)     
  304     OVERRIDE_DISABLE    = 0x0,
 
  305     OVERRIDE_ANALOG     = 0x1,
 
  306     OVERRIDE_PULLDOWN   = 0x2,
 
  307     OVERRIDE_PULLUP     = 0x4,
 
  308     OVERRIDE_ENABLE     = 0x8,
 
 
  317#define IOC_OVERRIDE_OE   0x00000008     
  318#define IOC_OVERRIDE_PUE  0x00000004     
  319#define IOC_OVERRIDE_PDE  0x00000002     
  320#define IOC_OVERRIDE_ANA  0x00000001     
  321#define IOC_OVERRIDE_DIS  0x00000000     
  327#define IOC    ((cc2538_ioc_t *)0x400d4000) 
  335#define IOC_PXX_OVER    (IOC->OVER) 
  336#define IOC_PXX_SEL     (IOC->SEL) 
#define UART0_RXD
direct I/O pin for UART_DEV(0) RxD, can't be changed
#define UART0_TXD
direct I/O pin for UART_DEV(0) TxD, can't be changed
CC2538 MCU interrupt and register definitions.
volatile uint32_t cc2538_reg_t
Least-significant 32 bits of the IEEE address.
#define UART1_TXD
TxD pin of UART_DEV(1)
#define UART1_RXD
RxD pin of UART_DEV(1)
#define GPIO_PXX_TO_NUM(port_num, bit_num)
Generate a GPIO number given a port and bit number.
cc2538_ioc_over_t
Values to override pin configuration.
@ SSI0_FSS_IN
SSI0 FSS IN.
@ SSI0_CLK_IN
SSI0 CLK IN.
@ SSI1_FSS_IN
SSI1 FSS IN.
@ SSI1_CLK_IN
SSI1 CLK IN.
@ SSI1_TX_SER
SSI1 STXSER EN.
@ SSI0_TX_SER
SSI0 STXSER EN.
@ SSI1_CLK_OUT
SSI1 CLKOUT.
@ SSI0_FSS_OUT
SSI0 FSSOUT.
@ SSI1_FSS_OUT
SSI1 FSSOUT.
@ SSI0_CLK_OUT
SSI0 CLKOUT.
GPIO port component registers.
cc2538_reg_t AFSEL
GPIO_A Alternate Function / mode control select register.
cc2538_reg_t DATA
GPIO_A Data Register.
cc2538_reg_t IRQ_DETECT_UNMASK
GPIO_A IRQ Detect ACK for masked interrupts.
cc2538_reg_t DIR
GPIO_A data direction register.
cc2538_reg_t USB_IRQ_ACK
GPIO_A IRQ Detect ACK for USB.
cc2538_reg_t PI_IEN
GPIO_A The Power-up Interrupt Enable register.
cc2538_reg_t RESERVED3[118]
Reserved addresses.
cc2538_reg_t GPIOLOCK
GPIO_A Lock register.
cc2538_reg_t RESERVED2[63]
Reserved addresses.
cc2538_reg_t IBE
GPIO_A Interrupt Both-Edges register.
cc2538_reg_t RESERVED5[1]
Reserved addresses.
cc2538_reg_t RIS
GPIO_A Raw Interrupt Status register.
cc2538_reg_t IS
GPIO_A Interrupt Sense register.
cc2538_reg_t IC
GPIO_A Interrupt Clear register.
cc2538_reg_t PMUX
GPIO_A The PMUX register.
cc2538_reg_t IRQ_DETECT_ACK
GPIO_A IRQ Detect ACK register.
cc2538_reg_t RESERVED1[255]
Reserved addresses.
cc2538_reg_t MIS
GPIO_A Masked Interrupt Status register.
cc2538_reg_t RESERVED4[2]
Reserved addresses.
cc2538_reg_t GPIOCR
GPIO_A Commit Register.
cc2538_reg_t IEV
GPIO_A Interrupt Event Register.
cc2538_reg_t P_EDGE_CTRL
GPIO_A The Port Edge Control register.
cc2538_reg_t IE
GPIO_A Interrupt mask register.
cc2538_reg_t RESERVED6[567]
Reserved addresses.
IOC port component registers.
cc2538_reg_t PINS[21]
select input pin for special functions
cc2538_reg_t OVER[32]
override pin mode, enable alternate mode