diff --git a/stmhal/pin.c b/stmhal/pin.c
index 3a1a0a2deebc1c788693ebf557a4a6655ec6c158..f6c79d5d28156c7b589741d67a041fb2f4e37254 100644
--- a/stmhal/pin.c
+++ b/stmhal/pin.c
@@ -246,7 +246,7 @@ STATIC mp_obj_t pin_value(uint n_args, mp_obj_t *args) {
     pin_obj_t *self = args[0];
     if (n_args == 1) {
         // get pin
-        return MP_OBJ_NEW_SMALL_INT((self->gpio->IDR >> self->port) & 1);
+        return MP_OBJ_NEW_SMALL_INT((self->gpio->IDR >> self->pin) & 1);
     } else {
         // set pin
         if (mp_obj_is_true(args[1])) {