На RP2040 для Hello World достаточно
printf() и пары настроек в CMake. Со STM32 ситуация другая — действий от программиста заметно больше. Уже на старте появляются CMSIS, LL и HAL, дерево тактирования, CubeMX, программатор, аппаратный отладчик и вопрос, куда вообще выводить строку.Самый привычный вариант — UART, но им дело не ограничивается: есть semihosting, SWO и SEGGER RTT. И тут начинается практика, которая не всегда совпадает с красивой таблицей поддержки. У автора semihosting упорно не работал через J-Link Server, а SWO в CLion заработал только после обновления ПО J-Link.
Так простой Hello World превращается в хороший способ разобраться, что происходит между вызовом
printf() и появлением символов в терминале. Заодно становится понятнее, зачем в этой цепочке нужны интерфейсы, отладчики, серверы отладки и среда разработки — и почему один и тот же проект с разными связками инструментов может вести себя по-разному.
