|
44 | 44 | // Removed in SDK 1.1.0 |
45 | 45 | //#define GPIO_PULL_DOWN (2) |
46 | 46 |
|
47 | | -STATIC const pyb_pin_obj_t pyb_pin_obj[] = { |
| 47 | +STATIC const pyb_pin_obj_t pyb_pin_obj[16 + 1] = { |
48 | 48 | {{&pyb_pin_type}, 0, FUNC_GPIO0, PERIPHS_IO_MUX_GPIO0_U}, |
49 | 49 | {{&pyb_pin_type}, 1, FUNC_GPIO1, PERIPHS_IO_MUX_U0TXD_U}, |
50 | 50 | {{&pyb_pin_type}, 2, FUNC_GPIO2, PERIPHS_IO_MUX_GPIO2_U}, |
51 | 51 | {{&pyb_pin_type}, 3, FUNC_GPIO3, PERIPHS_IO_MUX_U0RXD_U}, |
52 | 52 | {{&pyb_pin_type}, 4, FUNC_GPIO4, PERIPHS_IO_MUX_GPIO4_U}, |
53 | 53 | {{&pyb_pin_type}, 5, FUNC_GPIO5, PERIPHS_IO_MUX_GPIO5_U}, |
| 54 | + {{NULL}, 0, 0, 0}, |
| 55 | + {{NULL}, 0, 0, 0}, |
| 56 | + {{NULL}, 0, 0, 0}, |
54 | 57 | {{&pyb_pin_type}, 9, FUNC_GPIO9, PERIPHS_IO_MUX_SD_DATA2_U}, |
55 | 58 | {{&pyb_pin_type}, 10, FUNC_GPIO10, PERIPHS_IO_MUX_SD_DATA3_U}, |
| 59 | + {{NULL}, 0, 0, 0}, |
56 | 60 | {{&pyb_pin_type}, 12, FUNC_GPIO12, PERIPHS_IO_MUX_MTDI_U}, |
57 | 61 | {{&pyb_pin_type}, 13, FUNC_GPIO13, PERIPHS_IO_MUX_MTCK_U}, |
58 | 62 | {{&pyb_pin_type}, 14, FUNC_GPIO14, PERIPHS_IO_MUX_MTMS_U}, |
@@ -198,16 +202,13 @@ STATIC mp_obj_t pyb_pin_obj_init_helper(pyb_pin_obj_t *self, mp_uint_t n_args, c |
198 | 202 | STATIC mp_obj_t pyb_pin_make_new(const mp_obj_type_t *type, mp_uint_t n_args, mp_uint_t n_kw, const mp_obj_t *args) { |
199 | 203 | mp_arg_check_num(n_args, n_kw, 1, MP_OBJ_FUN_ARGS_MAX, true); |
200 | 204 |
|
201 | | - // Run an argument through the mapper and return the result. |
| 205 | + // get the wanted pin object |
202 | 206 | int wanted_pin = mp_obj_get_int(args[0]); |
203 | 207 | pyb_pin_obj_t *pin = NULL; |
204 | | - for (int i = 0; i < MP_ARRAY_SIZE(pyb_pin_obj); i++) { |
205 | | - if (pyb_pin_obj[i].phys_port == wanted_pin) { |
206 | | - pin = (pyb_pin_obj_t*)&pyb_pin_obj[i]; |
207 | | - break; |
208 | | - } |
| 208 | + if (0 <= wanted_pin && wanted_pin < MP_ARRAY_SIZE(pyb_pin_obj)) { |
| 209 | + pin = (pyb_pin_obj_t*)&pyb_pin_obj[wanted_pin]; |
209 | 210 | } |
210 | | - if (pin == NULL) { |
| 211 | + if (pin == NULL || pin->base.type == NULL) { |
211 | 212 | nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "invalid pin")); |
212 | 213 | } |
213 | 214 |
|
|
0 commit comments