cc2538: gpio: Use accessor macros

Use the GPIO accessor macros instead of copying raw register access code all
over the place. This is cleaner and less error prone.

This fixes the setting of the USB pull-up resistor that worked only by chance on
the CC2538DK because it is controlled by the pin 0 of the used GPIO port.

Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
This commit is contained in:
Benoît Thébaudeau 2013-11-15 19:57:44 +01:00
parent 923f161b7b
commit 680050861c
4 changed files with 13 additions and 14 deletions

View File

@ -89,7 +89,7 @@ gpio_port_a_isr()
notify(REG(GPIO_A_BASE | GPIO_MIS), GPIO_A_NUM);
REG(GPIO_A_BASE | GPIO_IC) = 0xFF;
GPIO_CLEAR_INTERRUPT(GPIO_A_BASE, 0xFF);
ENERGEST_OFF(ENERGEST_TYPE_IRQ);
}
@ -104,7 +104,7 @@ gpio_port_b_isr()
notify(REG(GPIO_B_BASE | GPIO_MIS), GPIO_B_NUM);
REG(GPIO_B_BASE | GPIO_IC) = 0xFF;
GPIO_CLEAR_INTERRUPT(GPIO_B_BASE, 0xFF);
ENERGEST_OFF(ENERGEST_TYPE_IRQ);
}
@ -119,7 +119,7 @@ gpio_port_c_isr()
notify(REG(GPIO_C_BASE | GPIO_MIS), GPIO_C_NUM);
REG(GPIO_C_BASE | GPIO_IC) = 0xFF;
GPIO_CLEAR_INTERRUPT(GPIO_C_BASE, 0xFF);
ENERGEST_OFF(ENERGEST_TYPE_IRQ);
}
@ -134,7 +134,7 @@ gpio_port_d_isr()
notify(REG(GPIO_D_BASE | GPIO_MIS), GPIO_D_NUM);
REG(GPIO_D_BASE | GPIO_IC) = 0xFF;
GPIO_CLEAR_INTERRUPT(GPIO_D_BASE, 0xFF);
ENERGEST_OFF(ENERGEST_TYPE_IRQ);
}

View File

@ -317,7 +317,7 @@ usb_arch_setup(void)
/* Enable pull-up on usb port */
GPIO_SET_OUTPUT(USB_PULLUP_PORT, USB_PULLUP_PIN_MASK);
REG((USB_PULLUP_PORT | GPIO_DATA) + (USB_PULLUP_PIN_MASK << 2)) = 1;
GPIO_SET_PIN(USB_PULLUP_PORT, USB_PULLUP_PIN_MASK);
for(i = 0; i < USB_MAX_ENDPOINTS; i++) {
usb_endpoints[i].flags = 0;

View File

@ -99,7 +99,7 @@
*/
#define USB_PULLUP_PORT GPIO_C_BASE
#define USB_PULLUP_PIN 0
#define USB_PULLUP_PIN_MASK (1 << USB_PULLUP_PIN)
#define USB_PULLUP_PIN_MASK GPIO_PIN_MASK(USB_PULLUP_PIN)
/** @} */
/*---------------------------------------------------------------------------*/
/** \name UART configuration
@ -143,35 +143,35 @@
#define BUTTON_SELECT_PORT_NO GPIO_A_NUM
#define BUTTON_SELECT_PIN 3
#define BUTTON_SELECT_PORT GPIO_A_BASE
#define BUTTON_SELECT_PIN_MASK (1 << BUTTON_SELECT_PIN)
#define BUTTON_SELECT_PIN_MASK GPIO_PIN_MASK(BUTTON_SELECT_PIN)
#define BUTTON_SELECT_VECTOR NVIC_INT_GPIO_PORT_A
/** BUTTON_LEFT -> PC4 */
#define BUTTON_LEFT_PORT_NO GPIO_C_NUM
#define BUTTON_LEFT_PIN 4
#define BUTTON_LEFT_PORT GPIO_C_BASE
#define BUTTON_LEFT_PIN_MASK (1 << BUTTON_LEFT_PIN)
#define BUTTON_LEFT_PIN_MASK GPIO_PIN_MASK(BUTTON_LEFT_PIN)
#define BUTTON_LEFT_VECTOR NVIC_INT_GPIO_PORT_C
/** BUTTON_RIGHT -> PC5 */
#define BUTTON_RIGHT_PORT_NO GPIO_C_NUM
#define BUTTON_RIGHT_PIN 5
#define BUTTON_RIGHT_PORT GPIO_C_BASE
#define BUTTON_RIGHT_PIN_MASK (1 << BUTTON_RIGHT_PIN)
#define BUTTON_RIGHT_PIN_MASK GPIO_PIN_MASK(BUTTON_RIGHT_PIN)
#define BUTTON_RIGHT_VECTOR NVIC_INT_GPIO_PORT_C
/** BUTTON_UP -> PC6 */
#define BUTTON_UP_PORT_NO GPIO_C_NUM
#define BUTTON_UP_PIN 6
#define BUTTON_UP_PORT GPIO_C_BASE
#define BUTTON_UP_PIN_MASK (1 << BUTTON_UP_PIN)
#define BUTTON_UP_PIN_MASK GPIO_PIN_MASK(BUTTON_UP_PIN)
#define BUTTON_UP_VECTOR NVIC_INT_GPIO_PORT_C
/** BUTTON_DOWN -> PC7 */
#define BUTTON_DOWN_PORT_NO GPIO_C_NUM
#define BUTTON_DOWN_PIN 7
#define BUTTON_DOWN_PORT GPIO_C_BASE
#define BUTTON_DOWN_PIN_MASK (1 << BUTTON_DOWN_PIN)
#define BUTTON_DOWN_PIN_MASK GPIO_PIN_MASK(BUTTON_DOWN_PIN)
#define BUTTON_DOWN_VECTOR NVIC_INT_GPIO_PORT_C
/* Notify various examples that we have Buttons */

View File

@ -45,7 +45,6 @@
#include "dev/leds.h"
#include "dev/gpio.h"
#define LEDS_GPIO_DATA_MASK (LEDS_ALL << 2)
#define LEDS_GPIO_PIN_MASK LEDS_ALL
/*---------------------------------------------------------------------------*/
void
@ -57,13 +56,13 @@ leds_arch_init(void)
unsigned char
leds_arch_get(void)
{
return REG((GPIO_C_BASE | GPIO_DATA) + LEDS_GPIO_DATA_MASK);
return GPIO_READ_PIN(GPIO_C_BASE, LEDS_GPIO_PIN_MASK);
}
/*---------------------------------------------------------------------------*/
void
leds_arch_set(unsigned char leds)
{
REG((GPIO_C_BASE | GPIO_DATA) + LEDS_GPIO_DATA_MASK) = leds;
GPIO_WRITE_PIN(GPIO_C_BASE, LEDS_GPIO_PIN_MASK, leds);
}
/*---------------------------------------------------------------------------*/