그라운드 임베디드 EN 유튜브 구독

노트 / MCU 펌웨어

레지스터 제어와 HAL: 언제 무엇을 쓸까

레지스터를 직접 쓰면 빠르고 정확하고, HAL을 쓰면 빠르게 개발합니다. 둘을 섞어 쓰는 현업 방식.

GROUND EMBEDDED · 정리 노트펌웨어 02레지스터 제어와 HAL 1// HAL 2HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GP… 3// 레지스터 4GPIOA->BSRR = GPIO_BSRR_BS5;

같은 일, 두 가지 방법

내 코드HAL 함수HAL_GPIO_WritePin()레지스터GPIOA-BSRR핀 PA5내 코드레지스터GPIOA-BSRR핀 PA5
같은 핀을 켜는 두 가지 길. HAL은 결국 같은 레지스터에 씁니다.
// HAL
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
// 레지스터
GPIOA->BSRR = GPIO_BSRR_BS5;

비교

HAL 레지스터 (LL 포함)
개발 속도 빠름 느림
실행 속도 함수 호출과 검사로 느림 빠름
코드 크기 큼 작음
칩 간 이식 쉬움 칩마다 다름
이해도 내부가 가려짐 하드웨어가 그대로 보임

현업 방식

  • 초기화(클럭, 핀, 주변장치 설정)는 CubeMX가 만든 HAL 코드를 씁니다.
  • 10kHz 이상으로 도는 제어 루프, 인터럽트 안의 레지스터 접근은 레지스터나 LL(Low Layer) 드라이버로 씁니다.
  • HAL 함수가 이상하게 동작하면 소스를 열어 어떤 레지스터를 건드리는지 확인합니다. 결국 레퍼런스 매뉴얼을 읽을 줄 알아야 HAL도 제대로 씁니다.

HAL은 하드웨어를 몰라도 되게 해 주는 도구가 아니라 아는 사람이 빨리 일하게 해 주는 도구입니다.

영상으로 이어 보기회로와 하드웨어 시리즈 8편전자제품 속 회로 소자는 어떻게 동작할까? · 저항 · 커패시터 · 인덕터 완벽 정리PROJECT COURSE레지스터 설정을 실제 보드에서 해 보고 싶다면밸런싱 로봇 하나를 요구사항, 회로와 PCB, 펌웨어, 앱까지 실무 순서대로 만드는 강의입니다. 10파트 165강.강의 살펴보기 →FREE PDF무료 전자책 3권 받기이 주제를 한 권으로 이어서 읽고 싶다면. BLDC 모터 제어, 직렬통신, 센서를 책 분량으로 묶었습니다. 이메일만 남기면 바로 받습니다.무료로 받기 →