STM32

HAL과 LL 라이브러리의 차이

빵맨. 2020. 4. 25. 16:45
728x90

HAL은 Hardware Abstraction Layer의 약자로 이름과 같이 H/W계층을 가려주는 역할을 한다.

여기서 H/W계층은 MCU내부의 Peripheral의 Register들을 의미


기존 MCU프로그래밍의 경우 내부 Register를 직접 제어하여 프로그래밍 했지만

HAL을 사용할 경우 Register를 제어하는 부분이 모두 Library화 되어 있기 때문에 함수만으로

프로그래밍을 진행할 수 있다.

물론 기존 프로그래밍 방식도 함수로 Register를 직접 제어하도록 설계되어 있지만 STM32에서 제공하는

HAL Driver는 좀 더 구조화된 형태의 함수를 제공하고 있어 쉬운 프로그래밍을 가능하게 한다.
HAL은 STM32의 모든 Series(STM32F0부터 H7까지)용이 제공되고 있다.

모든 HAL은 호환성을 가지도록 만들어져 있어 STM32F0로 제작된 Source를 F7에서도 사용할 수 있다.


HAL이 많은 기능을 제공하고 있기 떄문에 쉬운 프로그래밍이 가능하지만 속도가 느리며

프로그램 사이즈가 커진다는 단점도 가지고 있다.

이를 위해 ST에서는 Low Level Driver(LL)을 제공하고 있다.
LL은 좀더 Simple한 구조로 제작되어 있으며 함수내에서 Register를 직접제어하는 방식으로 구현되어 있다.

728x90