diff --git a/drivers/pulse_counter/pulse_counter.c b/drivers/pulse_counter/pulse_counter.c
index ea5ca8c64b6dc03703371452ac50cf4bf8b8736d..0a8fc10d612cd6ab68586f7ac39073855f80526b 100644
--- a/drivers/pulse_counter/pulse_counter.c
+++ b/drivers/pulse_counter/pulse_counter.c
@@ -38,7 +38,15 @@ static void pulse_counter_trigger(void *arg)
 /* Initialize pulse counter */
 int pulse_counter_init(pulse_counter_t *dev, const pulse_counter_params_t *params)
 {
-    if (gpio_init_int(params->gpio, GPIO_IN_PU, params->gpio_flank, pulse_counter_trigger, dev)) {
+    gpio_mode_t gpio_mode;
+    if (params->gpio_flank == GPIO_FALLING) {
+        gpio_mode = GPIO_IN_PU;
+    }
+    else {
+        gpio_mode = GPIO_IN_PD;
+    }
+
+    if (gpio_init_int(params->gpio, gpio_mode, params->gpio_flank, pulse_counter_trigger, dev)) {
         return -1;
     }