Излишняя универсальность - зло. Да и, по-моему, вряд ли это
получится, ибо есть архитектурные нюансы из-за которых иногда HAL
нужно обходить. Например, в дохлом контроллере выбросить нафиг HAL-овый колбэк, используемый в процедуре прерывания и реализовать обработку прерывания "как обычно". Недавно для PIC18 писал, используя тамошний HAL из-под MCC. Пришлось немного переколбасить, чтобы скомпенсировать кой-какие лаги из-за HAL-овых излишеств.
В STM-овом HAL пришлось выдергивать какую-то внутреннюю переменную для своих нужд.
Но в целом эти HAL-ы мне сильно помогли, ибо очень сильно угнетала мысль о необходимости штудирования 600-страничных мануалов.