inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

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

해결된 질문

224

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의 출력상태의 변화를 주어야합니다. 동작여부를 판단 할 수 있을 것으로 보입니다.

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

0

23

3

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

0

36

2

IDE 설치 영상 관련 문의

0

52

2

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

0

138

2

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

0

46

2

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

0

62

2

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

0

75

2

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

0

60

2

빌드 및 디버깅 오류

0

115

2

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

0

75

2

씽크 오류

0

58

1

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

0

75

2

회로도 핀 연결 질문

0

69

2

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

0

73

2

Nucleo 보드로 대체

0

86

2

구매해야 하는 물품 문의

0

98

2

ST-Link 디버깅 에러

0

85

3

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

0

112

2

이전 질문 재질문입니다.!

0

78

2

다른 개발 실습 보드 사용문의

0

97

2

smt32 Cube Ide 설치관련 에러입니다

0

232

2

제가 1년전에 구매해서 이제 뜯어봤는데 납땜이 겹쳐있는데 사용해도 괜찮을까요?

0

95

2

타이머 최대 주파수 질문

0

67

2

초기 신호에 대한 질문

0

91

2