summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2014-08-24 18:34:38 +0100
committerDamien George <damien.p.george@gmail.com>2014-08-24 18:34:38 +0100
commit1d8a06406ada77eab5ee368dde9c38c6fe4e7746 (patch)
tree73cf28513ea907e5f0c5ec0ef21c281dd98b2519
parent2c4e67e32d56929820e9ce10dd174cab9336c193 (diff)
downloadmicropython-1d8a06406ada77eab5ee368dde9c38c6fe4e7746.tar.gz
micropython-1d8a06406ada77eab5ee368dde9c38c6fe4e7746.zip
examples: Added pins.py example script to list pin config/af.
Script is due to Dave Hylands.
-rw-r--r--examples/pins.py58
1 files changed, 58 insertions, 0 deletions
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('')