The HAL component is meant to be an abstraction layer between the application and the underlying micro-controller hardware.
HAL offers an high level API for accessing common MCU peripheral like GPIO, ADC, SPI and so on and also take care of clocks-related and board-level initializations.
This component is only released only under Apache License 2.0 and is 100% free also for commercial use.
Is code portability really possible using HAL? What are the limitations?