Сейчас маньячить с объединением всего и вся в одну единицу
трансляции особого смысла нет. Компилятор вполне способен
заинлайнить и SystemInit() и main(), например, в ResetHandler(). У
меня единицы трасляции для startup, SystemInit и main всегда есть,
а другие появляются только если там вектора прерываний или буферы
какие-нито есть. А так да, шаблоны позволяют всё в заголовочных
файлах делать. Это хорошо для оптимизаций на скорость. А вот размер
кода, бывает, страдает. Но уж
чего чего, а флэши на
борту сейчас...