준비물
- CubeIDE가 설치된 PC
- 개발 보드 : Nucleo-F746ZG
- micro 5 pin 케이블
목표
Nucleo-F746ZG 개발보드에 내장된 푸쉬 스위치(B1)로 내장 LED(LD1) ON/OFF
선수지식
2025.08.26 - [임베디드 & 로보틱스/STM32] - [STM32-기초] HAL GPIO로 내장 LED 500ms 점멸
참고자료
HAL Driver를 사용하여 B1 USER 스위치가 눌릴 때마다 LD1 ON/OFF 하기
1. CubeIDE 새 프로젝트 만들기
- File → New → STM32 Project
- MCU/MPU Selector 탭 → Commercial Part Number에서 746ZGT6 검색 → 선택 → Next
- 프로젝트 이름 입력 gpio_led_on_off → Finish
- 팝업창에서 "Do you want to apply now such default configuration?" 이라고 물으면 yes
2. LD1(LED)와 B1(스위치) 연결된 GPIO pin 확인
LD1과 B1이 연결된 GPIO 핀은 위에 첨부한 참고자료(UM1974)에서 확인할 수 있습니다.


LD1은 PB0에 연결되어있고, B1은 PC13에 연결되어있음을 알 수 있습니다.

B1 의 회로를 분석해보면, C52 는 현재 보드에 실장 되어있지 않기 때문에, C52 와 R60 은 없다고 생각하고 분석한다면
R58 이 풀다운 저항 역할을 하고, B1 스위치가 눌리면(ON) VDD 의 전압이 PC13 에 들어가서 PC13의 pin의 값이 HIGH가 될 것임을 예상할 수 있습니다.
3. Pinout & Configuration 확인/수정
- Pinout view에서 하단의 돋보기란에 PB0 입력
- Pinout & Configuration 창에서 PB0가 반짝이고 있음
- PB0 클릭 → GPIO_Output 클릭 → 핀이 초록색으로 변함(할당 됨)
- PB0 우클릭 → Enter User Label 클릭 → LD1 입력 → 엔터
- 돋보기 란에서 PC13 입력
- PC13이 반짝이고 있음
- PC13 클릭 → GPIO_Input 클릭 → 핀이 초록색으로 변함
- PC13 우클릭 → Enter User Label 클릭 → B1 입력 → 엔터
- Categories → System Core → GPIO
- 아래와 같이 설정 되어있는지 확인

4. 코드 생성
- 상단 Project → Generate Code(노란색 톱니바퀴 아이콘)
- 이제 아래와 같이 코드를 작성합니다.
/* USER CODE BEGIN PV */
int b1_state = 0;
/* USER CODE END PV */
/* USER CODE BEGIN WHILE */
while (1)
{
b1_state = HAL_GPIO_ReadPin(B1_GPIO_Port, B1_Pin);
if (b1_state == 0)
{
HAL_GPIO_WritePin(LD1_GPIO_Port, LD1_Pin, GPIO_PIN_RESET);
}
else
{
HAL_GPIO_WritePin(LD1_GPIO_Port, LD1_Pin, GPIO_PIN_SET);
}
/* USER CODE END WHILE */
Tip!
ctrl + space 를 누르면 아래 이미지와 같이 자동완성 기능을 사용할 수 있습니다.
5. 동작 성공
동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.
'임베디드 & 로보틱스 > STM32' 카테고리의 다른 글
| [STM32-기초] UART 통신으로 Hello World 찍어보기 (Polling) (0) | 2025.12.10 |
|---|---|
| [STM32-기초] 외부 인터럽트(EXTI) 사용해서 LED 상태 토글하기 (4) | 2025.08.28 |
| [STM32-기초] HAL GPIO로 내장 LED 500ms 점멸 (0) | 2025.08.26 |
| cubeIDE 설치 (3) | 2025.08.16 |
