STM32CubeProgrammer is the official programming software developed by STMicroelectronics for STM32 microcontrollers. It supports programming, flashing, and debugging via multiple interfaces including STLink, UART, JTAG, and USB DFU modes. There are two commonly used connectors which expose only the SWD (Serial Wire Debug) interface or the full JTAG interface. If you are using one of ST's official Nucleo or Discovery boards, you do not have to connect an external debugger. Thompson sells branded programmers, adaptors and cables. We'll use an inexpensive ST-LinkV2. The tool supports Windows, Linux, and MacOS platforms. STM32CubeProgrammer (STM32CubeProg) provides an all-in-one software tool to program STM32 devices in any environment: multi-OS, graphical user interface or command line interface, support for a large choice of connections (JTAG, SWD, USB, UART, SPI, CAN, I2C), with manual operation or automation.