diff --git a/cpu/nrf5x_common/periph/gpio.c b/cpu/nrf5x_common/periph/gpio.c index 368d61e34ef0dc0eb714e43e0c8dcce8a2e262d7..26ef551a20e9490cc96f53ab487a24d3121b1bc0 100644 --- a/cpu/nrf5x_common/periph/gpio.c +++ b/cpu/nrf5x_common/periph/gpio.c @@ -34,10 +34,12 @@ #define PORT_BIT (1 << 5) #define PIN_MASK (0x1f) +#ifdef MODULE_PERIPH_GPIO_IRQ /** * @brief Place to store the interrupt context */ static gpio_isr_ctx_t exti_chan; +#endif /** * @brief Get the port's base address @@ -72,6 +74,41 @@ int gpio_init(gpio_t pin, gpio_mode_t mode) return 0; } +int gpio_read(gpio_t pin) +{ + if (port(pin)->DIR & (1 << pin)) { + return (port(pin)->OUT & (1 << pin)) ? 1 : 0; + } + else { + return (port(pin)->IN & (1 << pin)) ? 1 : 0; + } +} + +void gpio_set(gpio_t pin) +{ + port(pin)->OUTSET = (1 << pin); +} + +void gpio_clear(gpio_t pin) +{ + port(pin)->OUTCLR = (1 << pin); +} + +void gpio_toggle(gpio_t pin) +{ + port(pin)->OUT ^= (1 << pin); +} + +void gpio_write(gpio_t pin, int value) +{ + if (value) { + port(pin)->OUTSET = (1 << pin); + } else { + port(pin)->OUTCLR = (1 << pin); + } +} + +#ifdef MODULE_PERIPH_GPIO_IRQ int gpio_init_int(gpio_t pin, gpio_mode_t mode, gpio_flank_t flank, gpio_cb_t cb, void *arg) { @@ -108,40 +145,6 @@ void gpio_irq_disable(gpio_t pin) NRF_GPIOTE->INTENCLR |= GPIOTE_INTENSET_IN0_Msk; } -int gpio_read(gpio_t pin) -{ - if (port(pin)->DIR & (1 << pin)) { - return (port(pin)->OUT & (1 << pin)) ? 1 : 0; - } - else { - return (port(pin)->IN & (1 << pin)) ? 1 : 0; - } -} - -void gpio_set(gpio_t pin) -{ - port(pin)->OUTSET = (1 << pin); -} - -void gpio_clear(gpio_t pin) -{ - port(pin)->OUTCLR = (1 << pin); -} - -void gpio_toggle(gpio_t pin) -{ - port(pin)->OUT ^= (1 << pin); -} - -void gpio_write(gpio_t pin, int value) -{ - if (value) { - port(pin)->OUTSET = (1 << pin); - } else { - port(pin)->OUTCLR = (1 << pin); - } -} - void isr_gpiote(void) { if (NRF_GPIOTE->EVENTS_IN[0] == 1) { @@ -150,3 +153,4 @@ void isr_gpiote(void) } cortexm_isr_end(); } +#endif