diff --git a/examples/pins.py b/examples/pins.py new file mode 100644 index 0000000000..ab359f6921 --- /dev/null +++ b/examples/pins.py @@ -0,0 +1,58 @@ +# Print a nice list of pins, their current settings, and available afs. +# Requires pins_af.py from stmhal/build-PYBV10/ directory. + +import pyb +import pins_af + +def af(): + max_name_width = 0 + max_af_width = 0 + for pin_entry in pins_af.PINS_AF: + max_name_width = max(max_name_width, len(pin_entry[0])) + for af_entry in pin_entry[1:]: + max_af_width = max(max_af_width, len(af_entry[1])) + for pin_entry in pins_af.PINS_AF: + pin_name = pin_entry[0] + print('%-*s ' % (max_name_width, pin_name), end='') + for af_entry in pin_entry[1:]: + print('%2d: %-*s ' % (af_entry[0], max_af_width, af_entry[1]), end='') + print('') + +def pins(): + mode_str = { pyb.Pin.IN : 'IN', + pyb.Pin.OUT_PP : 'OUT_PP', + pyb.Pin.OUT_OD : 'OUT_OD', + pyb.Pin.AF_PP : 'AF_PP', + pyb.Pin.AF_OD : 'AF_OD', + pyb.Pin.ANALOG : 'ANALOG' } + pull_str = { pyb.Pin.PULL_NONE : '', + pyb.Pin.PULL_UP : 'PULL_UP', + pyb.Pin.PULL_DOWN : 'PULL_DOWN' } + width = [0, 0, 0, 0] + rows = [] + for pin_entry in pins_af.PINS_AF: + row = [] + pin_name = pin_entry[0] + pin = pyb.Pin(pin_name) + pin_mode = pin.mode() + row.append(pin_name) + row.append(mode_str[pin_mode]) + row.append(pull_str[pin.pull()]) + if pin_mode == pyb.Pin.AF_PP or pin_mode == pyb.Pin.AF_OD: + pin_af = pin.af() + for af_entry in pin_entry[1:]: + if pin_af == af_entry[0]: + af_str = '%d: %s' % (pin_af, af_entry[1]) + break + else: + af_str = '%d' % pin_af + else: + af_str = '' + row.append(af_str) + for col in range(len(width)): + width[col] = max(width[col], len(row[col])) + rows.append(row) + for row in rows: + for col in range(len(width)): + print('%-*s ' % (width[col], row[col]), end='') + print('')