aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/libopenstm32/gpio.h1
-rw-r--r--lib/gpio.c6
2 files changed, 7 insertions, 0 deletions
diff --git a/include/libopenstm32/gpio.h b/include/libopenstm32/gpio.h
index 89018b9..f808c93 100644
--- a/include/libopenstm32/gpio.h
+++ b/include/libopenstm32/gpio.h
@@ -140,6 +140,7 @@
void gpio_set_mode(u32 gpioport, u8 mode, u8 cnf, u16 gpios);
void gpio_set(u32 gpioport, u16 gpios);
void gpio_clear(u32 gpioport, u16 gpios);
+u16 gpio_get(u32 gpioport, u16 gpios);
void gpio_toggle(u32 gpioport, u16 gpios);
u16 gpio_port_read(u32 gpioport);
void gpio_port_write(u32 gpioport, u16 data);
diff --git a/lib/gpio.c b/lib/gpio.c
index e9f90ca..2ade842 100644
--- a/lib/gpio.c
+++ b/lib/gpio.c
@@ -25,6 +25,7 @@
* GPIO_CNF_OUTPUT_PUSHPULL, GPIO12);
* gpio_set(GPIOB, GPIO4);
* gpio_clear(GPIOG, GPIO2 | GPIO9);
+ * gpio_get(GPIOC, GPIO1);
* gpio_toggle(GPIOA, GPIO7);
* reg16 = gpio_port_read(GPIOD);
* gpio_port_write(GPIOF, 0xc8fe);
@@ -66,6 +67,11 @@ void gpio_clear(u32 gpioport, u16 gpios)
GPIO_BRR(gpioport) = gpios;
}
+u16 gpio_get(u32 gpioport, u16 gpios)
+{
+ return gpio_port_read(gpioport) & gpios;
+}
+
/* TODO: Should work for multiple GPIOs? */
void gpio_toggle(u32 gpioport, u16 gpio)
{