# Print a nice list of pins, their current settings, and available afs. # Requires pins_af.py from ports/stm32/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('')