# Interfaces The intention of these interfaces is to provide an abstraction layer for commonly used resources. Libraries using these interfaces can be reused on different platforms by simply implementing the required interfaces for the selected platform. Interfaces for the following resources are provided: * GPIO pin * Mutex * Signal * SPI * UART # HAL implementations Implementations using the HAL are provided for the following interfaces: * GpioPin * SpiInterface, SpiDevice * UART To enable these implementations follow the instructions from the individual headers. # Atomic implementations Implementations using atomic variables are provided for the following interfaces: * Mutex * Signal To enable these implementations define `STA_ATOMIC_ENABLE` in ``.