diff --git a/examples/dev/gpio-hal/gpio-hal-example.c b/examples/dev/gpio-hal/gpio-hal-example.c
index 380c06388897e737127b0762cdc8ace42b33f2a1..75137e26ae2578c6727f8c866d505d7ddc3b9c50 100644
--- a/examples/dev/gpio-hal/gpio-hal-example.c
+++ b/examples/dev/gpio-hal/gpio-hal-example.c
@@ -46,9 +46,9 @@ static uint8_t counter;
 /*---------------------------------------------------------------------------*/
 /* Print gpio_hal_pin_mask_t using the correct format */
 #if GPIO_HAL_PIN_COUNT > 32
-#define PIN_MASK_FMT PRIx64
+#define PIN_MASK_FMT "0x%016" PRIx64
 #else
-#define PIN_MASK_FMT PRIx32
+#define PIN_MASK_FMT "0x%08" PRIx32
 #endif
 /*---------------------------------------------------------------------------*/
 PROCESS(gpio_hal_example, "GPIO HAL Example");
@@ -127,7 +127,7 @@ PROCESS_THREAD(gpio_hal_example, ev, data)
       }
 
       /* Test read */
-      printf("%u: Pins are 1-%u, 2=%u, 3=%u, mask=0x%08" PIN_MASK_FMT "\n",
+      printf("%u: Pins are 1-%u, 2=%u, 3=%u, mask=" PIN_MASK_FMT "\n",
              counter & 7,
              gpio_hal_arch_read_pin(out_pin1),
              gpio_hal_arch_read_pin(out_pin2),
diff --git a/os/dev/gpio-hal.h b/os/dev/gpio-hal.h
index 9fe54177216093bb4989751ac40de71ce525793d..5ad9f472bc2efea2625d11812edcda8129d1d143 100644
--- a/os/dev/gpio-hal.h
+++ b/os/dev/gpio-hal.h
@@ -189,7 +189,7 @@ void gpio_hal_event_handler(gpio_hal_pin_mask_t pins);
  * \param pin The pin
  * \return The corresponding mask
  */
-#define gpio_hal_pin_to_mask(pin) (1 << (pin))
+#define gpio_hal_pin_to_mask(pin) ((gpio_hal_pin_mask_t)1 << (pin))
 /** @} */
 /*---------------------------------------------------------------------------*/
 /**