b. 임베디드/STM32
[STM32F407VGT Discovery] GPIO 버튼
로봇쟁이
2019. 6. 15. 23:43
이번에는 Discovery 보드에 내장된 버튼을 이용해서 LED 토글을 해보겠습니다.
먼저 버튼 회로를 살펴보겠습니다.
보드에는 두개의 버튼이 있는데 하나는 USER용 PA0에 연결되어 있고 풀다운 저항이 같이 붙어있네요.
다른 하나는 Reset 버튼이구요.. ^^
그럼 버튼을 이용해서 간단한 PD13에 있는 LED를 점멸해보겠습니다.
우선 그림처럼 PA0을 입력으로 변경하고
당연히 PD13은 GPIO_OUTPUT으로 설정해야겠죠?? ^^
제 코드는 참고만 하시고 더 좋은 방법이 있으면 알려주세요;;;
while(1)
{
/*USER CODE END WHILE*/
uint32_t key_input=LL_GPIO_ReadInputPort(GPIOA);
key_input&=GPIO_PIN_0;
if(key_input==1)
LL_GPIO_TogglePin(GPIOD,LL_GPIO_PIN_13);
HAL_Delay(500);
/*USER CODE BEGIN 3*/
}
코드를 역추적해보면 더 정확히 어떤 레지스터를 통해서 제어가 되는지 확인이 가능합니다.
GPIO 입력은 포트의 IDR 레지스터의 각 핀을 읽고
GPIO 출력은 포트의 ODR 레지스터의 핀을 통해서 출력을 하는군요 ^^;
반응형