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 레지스터의 핀을 통해서 출력을 하는군요 ^^;

반응형