Пробую для этих целей внедрять BSP, который уникален для каждой
платы. Смысл в том, что вызов функции, завязанной на работу с
железом, например LedGreenOn(), описывается отдельно для каждой
платы: // /bsp/nucleo/led.h
void LedGreenOn() {
GPIOA->BSRR = 1 << 2;
}
// /bsp/discovery/led.h
void LedGreenOn() {
GPIOA->BSRR = 1 << 3l
}
// /bsp/my_board_rev1/led.h
void LedGreenOn()
{
// На плате такого светодиода нет
return;
}
Общие библиотеки пихаются в папку lib, уникальные для платы в папку bsp/<board>/lib. Так как у вас всё в пределах одной линейки, то все упрощается. Основной проект у меня сейчас на двух платах, готовится третья, плюс синтетический порт.