강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của dragonx37632
dragonx37632

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

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

개인정의 질문

Viết

·

348

0

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

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

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

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

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

ciot드론-개발

Câu trả lời 1

1

ChrisP님의 프로필 이미지
ChrisP
Người chia sẻ kiến thức

안녕하세요! 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드라이버 내부의 코드를 살펴보면 좀 더 이해가 될 것 같네요~

dragonx37632님의 프로필 이미지
dragonx37632
Người đặt câu hỏi

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

Hình ảnh hồ sơ của dragonx37632
dragonx37632

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

Đặt câu hỏi