This tool uses a fork of the amazing curated .xml from the modm-devices project. The modm-devices project provides metadata about all STM32 devices in machine-parseable .xml format and is really what makes any tool like this one possible.
Installing:
pip3 install stm_layout
Usage:
stm_layout -c <chip_name>
If chip_name is not fully-specified (i.e. 'stm32g474' is only a partial chip name), then a list of available chips matching that part will be printed to stdout. If the chip name is fully-specified, (i.e. 'stm32g474cet6'), then a curses UI will be brought up for browsing/searching pins and configuring them.
Navigate using the arrow keys and the tab key. Search using standard regex queries in the search bar. In any pane but the search pane:
q - quits w - writes /tmp/stm32_pinout.txt r - resets the current pin
The stm32_pinout.txt is an attempt to configure all the GPIO registers for your chip; it is woefully incomplete for anything except the H7 and G4 chips I have access to.
Usage:
stm_layout_tk -c <chip_name>
This command launches a Tkinter-based version of stm_layout that allows mouse navigation and a more compact display for larger MCUs. It does not attempt to implement the pin-configuration "feature" that the curses-based tool does and is more useful as a simple reference.