diff --git a/examples/pins.py b/examples/pins.py
new file mode 100644
index 0000000000000000000000000000000000000000..ab359f6921e0cff0f69bae5bc0586577c6cd9b3f
--- /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('')