STM32CubeIDE 프로젝트 생성
이번 포스트에서는 STM32CubeIDE를 사용하여 새 프로젝트를 생성하고 기본적인 설정을 진행한다.
기본 프로젝트 설정
프로젝트 생성 단계
1. STM32CubeIDE 실행
- STM32CubeIDE를 실행한다
- “File → New → STM32 Project” 선택
2. MCU 선택
- Target Selection에서 STM32F411RE 검색 및 선택
- Nucleo-64 보드 선택
3. 프로젝트 설정
1. RCC (클럭) 설정
클럭 설정은 STM32 개발에서 가장 중요한 초기 설정 중 하나다.
1) 클럭 소스 이해
내부 클럭 (HSI - High Speed Internal)
- 주파수: 16MHz 고정
- 특징:
- 외부 크리스털이 필요 없다
- 온도나 전압 변화에 영향을 받을 수 있다
- 정확도가 외부 클럭보다 낮다
외부 클럭 (HSE - High Speed External)
MCU 외부에 실제 크리스털 오실레이터 부품을 달아서 사용하는 클럭이며 보통 보드에 크리스털이나 클럭 모듈이 납땜되어 있음
- 주파수: 8MHz (우리 보드 기준)
- 특징:
- 외부 크리스털 오실레이터를 사용한다
- 높은 정확도와 안정성을 제공한다
- 정밀한 타이밍이 필요한 애플리케이션에 적합하다
2) RCC 설정 방법
1. Clock Configuration 탭으로 이동
RCC 클릭
2. HSE 설정

RCC → High Speed Clock (HSE) → Crystal/Ceramic Resonator 선택
3. PLL 설정
- HSE(8MHz)를 PLL 회로를 통해 100MHz로 증폭한다
- 이 과정을 통해 시스템 클럭을 최대 성능으로 설정할 수 있다
4. 최종 클럭 설정
- HCLK: 100MHz (시스템 클럭)
- APB1: 50MHz (저속 주변장치)
- APB2: 100MHz (고속 주변장치)
- Timer Clock: 100MHz
중요: PLL을 사용하면 저주파수 입력을 고주파수로 변환하여 시스템 성능을 최대화할 수 있다.
2. SYS (시스템) 설정
Debug 설정
디버깅을 위한 시스템 설정을 진행한다.
Debug 인터페이스 선택:

SYS → Debug → Serial Wire 선택
Serial Wire Debug (SWD)의 장점:
- 핀 수 절약: JTAG 대비 적은 핀 사용 (SWDIO, SWCLK만 필요)
- 고속 디버깅: 효율적인 디버깅 인터페이스 제공
- 실시간 추적: 실시간으로 프로그램 실행 상태를 모니터링할 수 있다
참고: SWD는 ARM Cortex-M 시리즈에서 표준으로 사용되는 디버깅 인터페이스다.
3. GPIO 설정
PA5 핀을 Output으로 설정
User LD2를 제어하기 위해 PA5 핀을 GPIO Output으로 설정한다.
설정 단계:
1. Pinout & Configuration 탭에서 PA5 핀 찾기
2. PA5 클릭 후 GPIO_Output 선택

3. GPIO 설정 확인
- GPIO output level: Low (초기값)
- GPIO mode: Output Push Pull
- GPIO Pull-up/Pull-down: No pull-up and no pull-down
- Maximum output speed: Low
GPIO 모드 설명
Output Type 옵션:
Push Pull
- 기본 설정으로 대부분의 용도에 적합하다
- HIGH/LOW 양방향으로 확실한 신호를 출력한다
- LED 제어에 적합하다
Open Drain
- 주로 I2C 통신이나 와이어드 OR 로직에 사용한다
- HIGH 임피던스 상태와 LOW만 출력할 수 있다
Pull-up/Pull-down 옵션:
- No pull: 외부 풀업/풀다운 저항을 사용할 때
- Pull-up: 내부 풀업 저항 사용
- Pull-down: 내부 풀다운 저항 사용
4. 설정 결과 확인
Clock Tree 확인
Clock Configuration 탭에서 최종 클럭 설정을 확인할 수 있다:
- Input: HSE 8MHz
- PLL: x12.5 (8MHz × 12.5 = 100MHz)
- SYSCLK: 100MHz
- AHB: 100MHz
- APB1: 50MHz (÷2)
- APB2: 100MHz (÷1)
GPIO 설정 확인
Pinout view에서 다음을 확인할 수 있다:
- PA5가 녹색으로 표시된다 (GPIO_Output으로 설정됨)
- 핀 라벨이 GPIO_Output으로 변경된다
간단한 테스트 코드
생성된 main.c에 LED 제어 코드를 추가해보자:
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
// LED ON
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
HAL_Delay(500); // 0.5초 대기
// LED OFF
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
HAL_Delay(500); // 0.5초 대기
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
정리
이번 포스트에서는 STM32CubeIDE를 사용한 프로젝트 생성과 기본 설정을 다뤘다:
다음 포스트에서는 개발에 필요한 도구들을 설치하고 빌드 환경을 구성해보겠다.
이전 포스트: 1. STM32 보드 소개
다음 포스트: 3. 개발 환경 구성