inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Khóa học miễn phí STM32F4 sử dụng HAL, CubeMX, TrueSTUDIO

Điều khiển động cơ servo, còi và động cơ DC SG90 bằng xung điện

개인정의 질문

352

dragonx37632

2 câu hỏi đã được viết

0

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

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

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

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

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

c iot 드론-개발

Câu trả lời 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

430

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

520

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