inflearn logo
강의

講義

知識共有

HAL、CubeMX、TrueSTUDIOを活用したSTM32F4無料講座

PWMでSG90サーボ、ブザー、DCモータ駆動

개인정의 질문

352

dragonx37632

投稿した質問数 2

0

안녕하세요 선생님 오늘처음 HAL에 대해 공부하는 학생입니다!

SPL에서는 예를들어 main.h에 #define test 't'를 정의하고

main.c에 case문을 이용하여 불러올때

case 't': //이런식으로 불러올 수 있는데

HAL 에서도 동일하게 가능한가요?

c iot 드론-개발

回答 1

1

ChrisP

안녕하세요! HAL과 SPL 그리고 C언어 문법에 대해서 아직 개념이 잘 안잡히신 것 같습니다.

우선 HAL과 SPL은 C언어를 기반으로 만들어진 peripheral 구동 라이브러리 입니다.

더 쉽게 말씀드리면,

STM32의 peripheral (예를 들면, GPIO나 UART 등) 구동을 위한 라이브러리인 것이죠.

SPL의 경우 USART_TransmitData() 라는 함수가 있는데 이와 유사하게 HAL의 경우는 HAL_UART_Transmit() 라는 함수가 존재합니다. 둘 다 모두 STM32의 UART로 데이터를 송신하는 함수이고, 모두 C언어로 작성되어있습니다.

SPL이나 HAL을 사용하지 않고 C언어로 직접 라이브러리를 작성할 수도 있습니다. 다만 그러기엔 기능이 워낙 복잡해서 ST에서 자사의 MCU를 쉽게 사용할 수 있도록 SPL이나 HAL, LL 같은 라이브러리를 제공해주는 것이죠.

 

C언어는 프로그래밍 언어입니다.

익히 알고계신 switch-case 문이나 if 문 등이 문법적으로 정의되어있는 언어이죠.

 

따라서, HAL이나 LL, SPL 모두 C언어 기반이기 때문에 switch-case등 모든 C언어의 문법이 사용 가능합니다. 강의에서처럼 HAL드라이버 내부의 코드를 살펴보면 좀 더 이해가 될 것 같네요~

0

dragonx37632

제가 질문을 잘못한거 같습니다. 모두 c기반으로 작성되는건 알고 있습니다. 다만 STM32CubeIDE에서 'USER CODE BEGIN ' 이후부터 'USER CODE END'안에 선언해야 코드가 날아가지 않는다고해서 .h 유저코드 부분의 그냥 선언을 하면 되는지 아직 감을 못잡아서 혹은 begin~end 아무 곳에나 선언을 해도 되는지에 대한 질문이였습니다!

PWM 실시간 변경 시 ARR이 아닌 PSC 레지스터를 제어해야 하는 이유

0

163

1

클럭설정

0

320

1

SDIO구현

0

429

1

CANable 구매 후 STM32F407V_EduBoard_Ver1.22와 연결 뒤 통신이 안됩니다.

0

309

1

CAN 통신에 사용되는 CANable 보드의 펌웨어

0

1494

2

서보모터 질문

0

344

2

서보모터 제어

0

499

1

IrDA 통신

0

294

1

파일 생성이 되지 않습니다

0

326

1

파일이 없습니다.

0

358

1

사용 프로그램이 맞나요?

0

363

4

선택사항을 실행할 수 없으며 최신 실행 작업이 없습니다. 질문

0

541

1

TrueSTUDIO가 뜨지 않습니다.

0

594

1

pwm 주기 강의 질문드립니다.

0

519

1

가감속 테이블

0

411

1

임베디드 공부

0

560

1

새로운 모듈 새로운 라이브러리

0

354

1

포트 설정 문제

0

467

1

서보모터

0

276

1

예제코드, 회로도 요청드립니다.

0

239

1

보드 구매후 구매확정 하였습니다.

0

227

1

예제코드 및 회로도 요청 건

0

268

1

PWM 생성 주기에 따른 차이점은 어떤것이 있나요?

0

577

1

int _write 함수 관련 문의

0

569

1