inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[임베디드 입문용] 임베디드 개발은 실제로 이렇게 해요.

HAL드라이브 없이 GPIO제어 하기 3

MX_GPIO_Init(); 사용 시 질문입니다

해결된 질문

234

wjddd12

작성한 질문수 2

0

MX_GPIO_Init(); 를 들어가면 HAL_GPIO_WritePin(GPIO_LED_GPIO_Port, GPIO_LED_Pin, GPIO_PIN_SET); 가 나오고 , 이코드는

`if (PinState != GPIO_PIN_RESET)

{

GPIOx->BSRR = GPIO_Pin;

}

else

{

GPIOx->BSRR = (uint32_t)GPIO_Pin << 16u;

}

즉, 핀 상태에 따라 led불을 온오프 시키는 역할을 하는것으로 이해하고 있습니다!

그렇다면 main문에서 MX_GPIO_Init() 을 사용할때는 while문 안에 /*HAL_GPIO_WritePin(GPIO_LED_GPIO_Port, GPIO_LED_Pin, 1);

HAL_Delay(100);

HAL_GPIO_WritePin(GPIO_LED_GPIO_Port, GPIO_LED_Pin, 0);

HAL_Delay(100);*/ 이 코드가 없어도 동작해야하는 것이 아닌가 라고 생각했습니다.

그래서 실제로 while문 내부를 다 지우고 MX_GPIO_Init() 만 쓰니까 동작이 안 되더라구요.

제가 잘 못 이해하고 있는 부분이 무엇인지를 확실시를 못해서 질문드립니다! 감사합니다.

Raspberry-Pi arduino 임베디드

답변 1

1

tanatodroom

MX_GPIO_Init()은 GPIO Port와 Pin의 초기 상태 설정을 위해 사용되는 함수입니다. 기본적인 프로젝트 생성시 main함수 내 while 반복문 이전 1회 실행됩니다. 따라서 질문자 분이 설정한 Pin의 초기상태에 따른 설정만 되고 이후 출력상태 변화에 영향을 주지 않게됩니다. 또한 해당 함수는 입력받는 변수가 없기때문에 해당 함수를 while문에 적어두는 것 만으로는 Pin의 설정에 변화를 임의로 줄 수 없습니다.

 

기존 while 반복문 내에 작성된 것과 같이 HAL드라이버를 사용하여 PIN의 출력상태의 변화를 주어야합니다. 동작여부를 판단 할 수 있을 것으로 보입니다.

111번째 강의까지 진행했는데, 온도 정보 받아오는 게 안돼요.

0

21

1

GPIO 간단 제어해보기 강의

0

42

2

브레이크포인트

0

34

1

STM IDE 설치 과정 중 에러 문의

0

27

1

STM IDE 설치 강의 중 문의

0

47

2

102. 난방실만들기4에서 디버깅 질문드립니다

0

35

1

13강 프로젝트생성해보기 관련 질문

0

58

3

난방실만들기.4 진행 중, m_state 값 초기화가 안됩니다..

0

66

2

IDE 설치 영상 관련 문의

0

71

2

[정보 공유] STM32CubeIDE 버전별 이슈 정리 (1.19 미만 / 2.0.0 이상)

0

243

2

스위치회로 value값 바뀌지 않음

0

65

2

FND 점등에 성공했는데, Controller.c 디버깅 중 문제가 생겼습니다.

0

84

2

FND 7세그먼트 처음 킬 때의 '7777'불이 안 들어옵니다.

0

99

2

포트에 안잡히면 x쉘에서 Port설정을 어떻게 하죠..?

0

82

2

빌드 및 디버깅 오류

0

140

2

보드에 불이 안들어옵니다.

0

88

2

씽크 오류

0

68

1

고추건조기 개발보드 전원연결 문제점..

0

95

2

회로도 핀 연결 질문

0

77

2

elf 파일을 찾을수 없다는 오류

0

90

2

Nucleo 보드로 대체

0

95

2

구매해야 하는 물품 문의

0

105

2

ST-Link 디버깅 에러

0

100

3

강의 사용하시는 pdf는 어디에 있나요?

0

120

2