Instead of declaring that _every_ device has USART1,2,3 and UART4,5, let the targets themselves define what periphs they do, along with their USARTx_BASE defines, and let the common headers just have the common abstractions.