| # 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('') |