Я этого не делал. Это неподъёмно при том зоопарке контроллеров,
которые я использую. Да и идёт поперёк моей философии. Я в класе
описываю только функционал модуля. Висит он на GPIO, SPI, I2C или
радиоканале приходит из шаблонного параметра. Да, в моём классе
конфигурации GPIO приходится руками назначать номер альтернативной
функции по даташиту на чип. Зато дальше происходит "магия".