본문 바로가기
임베디드 관련/STM32

VSC와 CubeMX로 STM32 개발 환경 구축

by minhyeok.lee 2025. 4. 22.
반응형

💻 VSCode + STM32CubeMX로 STM32 개발 환경 구축


🧰 [1단계] 개발환경 준비

Mac에서 VSCode(Visual Studio Code)를 사용해 STM32 NUCLEO-F746ZG 보드에 코드 업로드, 테스트하는 과정
개발 환경 설정 → 코드 작성 → 컴파일 → 업로드 → LED 깜빡임 확인


📦 설치 목록

도구 설치 명령
Homebrew /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
ARM GCC Toolchain (직접 설치 권장) gcc-arm-none-eabi-10.3-2021.10-aarch64-linux.tar.bz2 다운로드 후 /opt/gcc-arm-none-eabi/에 압축해제
ST-Link 도구 brew install stlink
VSCode brew install --cask visual-studio-code

🧩 VSCode 확장팩 설치 (VSCode 안에서 Ctrl+Shift+X)

  • ✅ C/C++ (ms-vscode.cpptools)
  • ✅ Cortex-Debug (marus25.cortex-debug)
  • ✅ Makefile Tools (ms-vscode.makefile-tools)

🧱 [2단계] STM32CubeMX로 프로젝트 생성

  1. STM32CubeMX 실행
  2. Board Selector에서 NUCLEO-F746ZG 선택 (사용자 보드에 맞게 선택)
  3. 핀맵 설정:
    • PB0, PB7, PB14 → GPIO_Output
  4. Project 설정
    • Toolchain: Makefile
    • Language: C
    • 프로젝트 폴더: 예: ~/stm32/led_test
  5. [GENERATE CODE] 클릭

🗃️ [3단계] VSCode에서 프로젝트 열기

  1. VSCode 실행 → led_test 폴더 열기
  2. .vscode 폴더 생성 후 launch.json, c_cpp_properties.json, tasks.json 설정

✍️ [4단계] 코드 작성

Core/Src/main.c 파일의 while (1) 안을 다음으로 수정:

while (1)
{
  HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
  HAL_Delay(500);

  HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_7);
  HAL_Delay(500);

  HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_14);
  HAL_Delay(500);
}

📀 이 코드는 0.5초 간격으로 PB0 → PB7 → PB14를 순차 토글하며 LED 깜빡임


⚙️ [5단계] 컴파일

#!/bin/bash
GCC_PATH=/opt/gcc-arm-none-eabi/bin
make clean
make GCC_PATH=$GCC_PATH

 

위와 같이 build.sh을 만들고 아래 명령어 실행

./build.sh

📤 [6단계] 업로드

#!/bin/bash
CUBEPROG_CLI="/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.macos64_2.2.100.202412061334/tools/bin/STM32_Programmer_CLI"
BIN_FILE="build/led_test.bin"
ADDRESS=0x08000000

if [ ! -f "$BIN_FILE" ]; then
  echo "❌ $BIN_FILE not found. 먼저 build.sh로 빌드"
  exit 1
fi

echo "🚀 Uploading $BIN_FILE to STM32 via ST-LINK (SWD)..."
"$CUBEPROG_CLI" -c port=SWD -d $BIN_FILE $ADDRESS -rst

if [ $? -eq 0 ]; then
  echo "✅ Upload successful!"
else
  echo "❌ Upload failed!"
fi

 

위와 같이 upload.sh을 만들고 아래 명령어 실행

./upload.sh

✅ [7단계] 실행 확인

  • 보드의 PB0, PB7, PB14에 연결된 LED가 0.5초 간격으로 순차 깜빡이면 성공
  • 보드 실크 인쇄로 핀 번호 확인 가능
  • 외부 LED 또는 멀티미터로 신호 확인 가능

🧪 [참고] 디버깅 설정 (VSCode + Cortex-Debug)

.vscode/launch.json 파일을 아래와 같이 설정 

{
  "configurations": [
    {
      "name": "Cortex Debug",
      "cwd": "${workspaceRoot}",
      "executable": "build/led_test.elf",
      "request": "launch",
      "type": "cortex-debug",
      "servertype": "stlink",
      "device": "STM32F746ZG",
      "runToMain": true
    }
  ]
}
반응형

댓글