728x90
반응형
지금까지는 GPIO를 Output으로만 설정하여 LED를 점멸했다. 이번에는 Nucleo Board에 Built-in Button으로 Built-in LED를 컨트롤할 것이다.
프로젝트 생성

프로젝트 이름은 3_built-in_button_LED이다.
GPIO 설정

보드메뉴얼 없이 Pintout Map에서 찾아보자. Built-in Button은 Blue PushButton(B1)이고, Built-in LED는 이전 프로젝트에서 사용했었던 LD2이다.

여기서 B1은 Default로 GPIO_EXTI13으로 설정되어 있는데 GPIO_Input으로 바꿔준 후, 저장한다.
FW 코딩
/* USER CODE BEGIN WHILE */
while (1)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13));
/* USER CODE END WHILE */
- HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13)
- PC13 핀의 입력 값을 읽어옴.
- 결과는 GPIO_PIN_SET(1) 또는 GPIO_PIN_RESET(0).
- Nucleo 보드에서는 User Button이 PC13에 연결돼 있어 → 버튼 입력값.
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, … )
- PA5 핀(보드 내장 LED LD2에 연결)의 출력을 지정.
- 세 번째 인자에 들어온 값(즉, PC13 버튼 상태)을 그대로 출력.

PC13 핀에는 기본적으로 풀업저항이 달려있다.
그래서, 버튼을 누르지 않을 경우 VDD이고, 버튼을 누를 경우 GND가 된다.
LED의 동작을 예상해보면 버튼을 누르지 않았을 경우에 불이 들어오고(HIGH), 버튼을 누를 경우에는 불이 꺼질(LOW) 것이다.
Build 후 실행한다.
결과
728x90
반응형
'Embedded System > STM32' 카테고리의 다른 글
| [STM32] GPIO 관련 HAL 함수 (0) | 2025.09.07 |
|---|---|
| [STM32] 5. Blink LED (0) | 2025.09.07 |
| [STM32] 4. Blink built-in LED (0) | 2025.09.07 |
| [STM32] 3. STM32Cube 프로젝트 생성 (0) | 2025.09.06 |
| [STM32] 2. Cortex 시리즈 정리 (0) | 2025.09.04 |
