이번에는 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 레지스터의 핀을 통해서 출력을 하는군요 ^^;
반응형
'b. 임베디드 > STM32' 카테고리의 다른 글
[STM32F407VGT Discovery] Timer Output Compare Mode (0) | 2019.06.21 |
---|---|
[STM32F407VGT Discovery] Timer FND(7segment)초 단위 동작 (0) | 2019.06.20 |
[STM32F407VGT Discovery] Timer PWM으로 LED 밝기 조절 (0) | 2019.06.19 |
[STM32F407VGT Discovery] Timer UPDATE INTERRUPT (1) | 2019.06.18 |
[STM32F407VGT Discovery] EXT 외부 인터럽트 (0) | 2019.06.17 |
[STM32F407VGT Discovery] GPIO LED점멸 (0) | 2019.06.15 |
[STM32F407VGT Discovery] CubeIDE 환경설정 (0) | 2019.06.15 |
[STM32F407VGT Discovery] RNG함수를 이용한 난수 발생 방법 (0) | 2019.04.03 |