임베디드

STM32 개발 환경 세팅 — CubeMX + CubeIDE (Nucleo-F401RE)

Zino. 2026. 5. 6. 15:12

RTOS 공부를 위해 STM32 개발 환경을 세팅한 과정을 정리한다. 사용한 보드는 Nucleo-F401RE, OS는 macOS 기준이다.


필요한 툴 두 가지

STM32 개발에는 툴이 두 개 필요하다. 예전에는 CubeIDE 하나에 다 들어있었지만, 2025년 11월 출시된 CubeIDE 2.0부터 두 툴이 완전히 분리되었다. 따라서 지금은 둘 다 따로 설치해야 한다.


두 툴의 역할 — 라즈베리파이에 비유하면

라즈베리파이를 써봤다면 이렇게 비유하면 이해가 빠르다.

라즈베리파이에서는 /boot/config.txt 나 raspi-config 로 GPIO, I2C, SPI 같은 핀 설정을 먼저 해두고, 그 다음에 Python이나 C 코드를 작성한다. STM32도 구조가 똑같다.

라즈베리파이 STM32

raspi-config 로 핀 기능 활성화 CubeMX 에서 핀맵 설정
/boot/config.txt 에서 하드웨어 설정 CubeMX 에서 클럭, 미들웨어 설정
Python / C 코드 작성 CubeIDE 에서 코드 작성
python3 main.py 실행 CubeIDE 에서 빌드 후 보드에 플래시

한 문장으로 정리하면 이렇다.

CubeMX = 하드웨어 설정 도구 (핀맵, 클럭, FreeRTOS 등 미들웨어 추가) CubeIDE = 실제 개발 환경 (코드 작성, 빌드, 디버깅, 플래시)

라즈베리파이와 한 가지 차이점이 있다면, STM32는 CubeMX에서 설정을 바꿀 때마다 초기화 코드를 재생성해서 CubeIDE에 반영해야 한다는 점이다. 하드웨어 초기화를 OS가 아니라 코드가 직접 담당하기 때문이다.


CubeMX로 프로젝트 만들기

1. New Project 생성

CubeMX를 실행하면 홈 화면이 나온다.

File → New Project 를 누르면 프로젝트 생성 화면이 열린다.

2. 보드 선택

상단 탭에서 Board Selector 를 선택하고 검색창에 NUCLEO-F401RE 를 입력한다. 목록에서 보드를 선택하고 우측 상단의 Start Project 를 클릭한다.

3. Pinout & Configuration 확인

보드를 선택하면 MCU 핀맵 화면이 나타난다. 초록색으로 표시된 핀들이 "이 핀을 쓰겠다"고 선언된 것들이다.

Nucleo-F401RE 기준으로 기본적으로 잡혀있는 핀들은 다음과 같다.

PC13  →  B1 [Blue PushButton]   온보드 버튼
PA5   →  LD2 [Green Led]        온보드 LED
PA2   →  USART_TX               ST-Link 시리얼
PA3   →  USART_RX

초록색이 아닌 핀들은 아직 역할이 없는 상태다. 클릭하면 GPIO, UART, I2C, SPI 등 원하는 기능을 할당할 수 있다.

왼쪽 카테고리의 Middleware and Software Packs 에서 FreeRTOS 등 미들웨어도 여기서 추가한다.

4. Project Manager 설정

상단 탭에서 Project Manager 로 이동한다.

  • Project Name: 원하는 프로젝트 이름 입력 (예: LED_test)
  • Project Location: 프로젝트를 저장할 상위 폴더 선택 (예: /Users/jinho/Desktop/STM/)
  • Toolchain / IDE: STM32CubeIDE 선택

주의: Toolchain이 EWARM 이나 다른 IDE로 되어있으면 반드시 STM32CubeIDE 로 바꿔줘야 한다.

5. Generate Code

우측 상단 GENERATE CODE 버튼을 클릭한다.

완료되면 지정한 위치에 프로젝트가 생성된다.


CubeIDE에서 프로젝트 열기

Workspace 설정

CubeIDE를 처음 실행하면 workspace 폴더를 지정하는 창이 뜬다.

여기서 중요한 점은 workspace는 프로젝트 폴더의 상위 폴더로 지정해야 한다는 것이다.

✅ 올바른 예: /Users/jinho/Desktop/STM        (프로젝트의 상위 폴더)
❌ 잘못된 예: /Users/jinho/Desktop/STM/LED_test  (프로젝트 폴더 자체)

폴더를 선택했으면 Launch 를 클릭한다.

프로젝트 Import

CubeIDE가 열리면 프로젝트를 불러온다.

File → Import
  → General
    → Existing Projects into Workspace
      → Next

Browse 버튼으로 CubeMX에서 생성한 프로젝트 폴더(LED_test)를 선택하면 목록에 프로젝트가 나타난다. Finish 를 누르면 완료다.

: "Copy projects into workspace" 는 체크 해제하는 게 좋다. 체크하면 파일이 복사되어 .ioc 파일 연동 시 경로가 꼬일 수 있다.

Project Explorer에 이렇게 보이면 성공이다.

LED_test
├── Includes
├── Core
├── Drivers
├── LED_test.ioc
└── STM32F401RETX_FLASH.ld

빌드 확인

Cmd+B 또는 상단 망치 아이콘으로 빌드한다. 하단 Console 창에 에러 없이 아래 메시지가 나오면 세팅 완료다.

Build Finished. 0 errors, 0 warnings

정리

CubeMX 설치 + CubeIDE 설치
       ↓
CubeMX에서 보드 선택 → 핀 설정 → Generate Code
       ↓
CubeIDE에서 workspace 지정 → 프로젝트 Import
       ↓
빌드 확인 → 완료

다음 포스트에서는 FreeRTOS를 추가하고, 첫 번째 Task인 LED Blink (Periodic Task) 를 직접 구현해볼 예정이다.

 

위에서 생성한 LED_test의 상위 디렉토리를 workspace로 Launch 해야한다

이렇게 바로 LED_test가 뜨기도 하지만 그렇지 않다면

상단바의 File/import/General/Existing Projects into Workspace 로 들어가 만들어둔 프로젝트 경로를 browse하여 import 하면 된다.

'임베디드' 카테고리의 다른 글

CAN 통신 기초  (0) 2026.05.19
STM32 LED 작동 (Nucleo-F401RE)  (0) 2026.05.13
RTOS  (0) 2026.04.30
엔코더 모터 (Encoder Motor) 제어  (0) 2025.09.17
Arduino UNO 와 Raspberry Pi 통신  (1) 2025.08.27