Motivation
Resources for setting up the ST-Link v3 MiniE with its breakout board are minimal. This guide covers programming and bidirectional serial communication (UART). While the STM32 Nucleo-G0B1RE is used, the same steps apply to any STM32 board with SWD.
[1]Connecting the Hardware
  1. Step 1

    Connect the ribbon cable from the ST-Link to the breakout board.

  2. Step 2

    Wire the breakout board to the target board using this pinout:

    GND to GND
    T_SWCLK to PA14
    T_SWDIO to PA15
    T_VCC to EV5
  3. Step 3

    Configure the following jumpers on the Nucleo board:

    Set JP2 selection to EV5
    Remove CN4 jumpers
  4. Breakout diagram
    Physical ST-Link

    Figure 1: Breakout board pinout (left) and ST-Link with breakout board (right).

  5. Step 4

    Connect an external power supply to the Nucleo board (I use 5V @ 0.5A):

    GND to GND (left-side Arduino header rail)
    5V to 5V (left-side Arduino header rail)
  6. Physical setup

    Figure 2: Your connection should roughly resemble what's seen here.

[2]Configuring the Software
  1. Step 1

    Load up STM32CubeIDE.

  2. Step 2

    Setup the following configurations under Run Configurations > Debugger:

    Debug probe to ST-LINK (ST-LINK GDB server)
    Interface to SWD
    Access port to 0 - Cortex-M0plus
    Reset behavior type to Connect under reset
[3]Running a Sample
  1. Step 1

    Under int main(void), setup a sample HAL_GPIO comparison script:

    C - main.c
    ...
    /* USER CODE BEGIN 2 */
    
    HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET);
    HAL_UART_Receive_IT(&huart2, buffer, 5);
    
    /* USER CODE END 2 */
    ...
    while (1) {
        if (HAL_GPIO_ReadPin(BUTTON_PORT, BUTTON_PIN) == GPIO_PIN_RESET) {
            if (memcmp(buffer, "hello", 5) == 0) {
                HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_SET);
            } else {
                HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET);
            }
        }
    }
    ...
  2. Step 2

    Then, initialize the callback outside the main function:

    C - main.c
    /* USER CODE BEGIN 4 */
    void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
        HAL_UART_Receive_IT(&huart2, buffer, 5);
        HAL_UART_Transmit(&huart2, buffer, 5, 0xFFFF);
    }
    /* USER CODE END 4 */
  3. Step 3

    Run the code, ensuring the target program is the project that contains this code. You can open up a Command Shell Console to interact with the Nucleo directly.