[uquote="AVI-crak",url="/forum/viewtopic.php?p=3939637#p3939637"]Да абсолютно ничего не помешает, ни у меня, ни у VladislavS. Для защиты от повторного использования есть методы, но они таки требуют предварительной подготовки кода. Просто так оно не будет работать.[/uquote]
Ясно, но отличия все равно существенные... Сейчас я могу сделать так:
Код: Выделить всё
ltdc.initRgb444<PC6, PA4, PE15, PB1, PC0, PA11, PD3, PC7, PB11, PB10, PB9, PB8, PA3, PA10>();
Spi2<PA11, PA9, PB14, PB15> spi2;
Для обоих интерфейсов можно передать только подходящие пины, но PA11 есть в обоих и работать ничего не будет, однако какова вероятность допустить такую ошибку? У мк 82 доступных пина, из них в качестве NSS2 можно использовать 4, один из них точно правильный, соответственно вероятность нарваться на нерабочий пин в случае ошибки равна 3/82. В типичном сишном коде проверок пинов нет вообще, там вероятность будет 81/82 и ничего, программят как-то
При желании можно объединить все пины в рамках одного списка создав временный объект, если есть дубликаты, код не скомпилируется:
Код: Выделить всё
PinList<PC6, PA4, PE15, PB1, PC0, PA11, PD3, PC7, PB11, PB10, PB9, PB8, PA3, PA10, PA11, PA9, PB14, PB15> dummy;
Или можно научить все объекты отдавать свои пины, тогда проверка может выглядеть так:
Код: Выделить всё
PinList<ltdc::pins, fmc::pins, spi2::pins...> dummy;