Přeskočit na hlavní obsah

HAL

HAL znamená Hardware Abstraction Layer. Česky je to hardwarová abstrakční vrstva. Jejím úkolem je schovat část detailů konkrétní periferie a nabídnout programátorovi pohodlnější funkce.

Místo nastavování jednotlivých bitů často pracujete s funkcemi typu:

HAL_GPIO_WritePin(...);
HAL_UART_Transmit(...);
HAL_ADC_Start(...);

Takový kód se čte lépe než dlouhá sada zápisů do registrů. Zároveň ale musíte vědět, že pod těmito funkcemi se pořád děje práce s hardwarem. Jen ji zrovna neděláte ručně.

Výhody

  • Rychlejší začátek projektu.
  • Čitelnější kód pro běžné operace.
  • Často dobré příklady od výrobce.
  • Menší šance, že zapomenete nějaký základní krok inicializace.

Nevýhody

  • Knihovna může být větší a pomalejší.
  • Některé speciální režimy periferie nemusí být dobře podporované.
  • Když něco nefunguje, chyba se může schovat hlouběji v knihovně.

HAL je výborný sluha pro běžné věci. Když ale potřebujete přesně vědět, který bit se kdy nastaví, je čas otevřít manuál a podívat se o vrstvu níž.

HAL není jen STM32

U STM32 se název HAL používá přímo v knihovnách STM32Cube. Podobnou vrstvu ale najdete i jinde, jen se může jmenovat jinak. Výrobce může mluvit o SDK, drivers, PLIB nebo prostě o knihovnách pro periférie. Například Microchip má své knihovny a konfiguraci v ekosystému Harmony 3.

Myšlenka je pořád podobná: program nepíše přímo do registrů, ale volá funkce připravené výrobcem. Konkrétní zdrojové soubory HALu jsou například v STM32CubeH7 HAL/LL driverech.