diff --git a/stmhal/mphal.c b/stmhal/mphal.c index e8f242051e..7fcd982dcb 100644 --- a/stmhal/mphal.c +++ b/stmhal/mphal.c @@ -16,5 +16,5 @@ const byte mp_hal_status_to_errno_table[4] = { }; NORETURN void mp_hal_raise(HAL_StatusTypeDef status) { - nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, (mp_obj_t)(mp_uint_t)mp_hal_status_to_errno_table[status])); + nlr_raise(mp_obj_new_exception_arg1(&mp_type_OSError, MP_OBJ_NEW_SMALL_INT(mp_hal_status_to_errno_table[status]))); } diff --git a/tests/pyb/halerror.py b/tests/pyb/halerror.py new file mode 100644 index 0000000000..1a6bce1a7e --- /dev/null +++ b/tests/pyb/halerror.py @@ -0,0 +1,15 @@ +# test hal errors + +import pyb + +i2c = pyb.I2C(2, pyb.I2C.MASTER) +try: + i2c.recv(1, 1) +except OSError as e: + print(repr(e)) + +can = pyb.CAN(1, pyb.CAN.NORMAL) +try: + can.send('1', 1, timeout=50) +except OSError as e: + print(repr(e)) diff --git a/tests/pyb/halerror.py.exp b/tests/pyb/halerror.py.exp new file mode 100644 index 0000000000..09c9f7ad92 --- /dev/null +++ b/tests/pyb/halerror.py.exp @@ -0,0 +1,2 @@ +OSError(5,) +OSError(116,)