본문 바로가기
임베디드 HW/마이크로컨트롤러

STM32 (STMicroelectironics) 입문하기

by MachineJW 2025. 6. 20.

1. STM32 마이크로컨트롤러

산업 임베디드 MCU중 대표격이라고 할 수 있는 "STM32"

  • STM32는 ST마이크로일레트로닉스에서 제조하는 현 세대에서 많이 사용되는 "마이크로컨트롤러(MCU)" 입니다.
  • TI, Microchops 등 글로벌 MCU 회사들도 사용자 중심의 개발 환경을 제공하고 있지만, ST사의 "STM32 Cube IDE"는 개발자에게 무료로 제공되며 Hardware Abstraction Layer (HAL)과 미들웨어 컴포넌트, 기본 제공 라이브러리 (SPL)등이 잘 구성되어 있어 입소문이 자자합니다.
  • 저도 새로운 MCU를 배운다고 하면은 무조건 현업에서 알아주는 STM32를 공부하기로 마음먹었습니다.
  • Arm Coretex 기반입니다.
  • Arm Core란 무엇인가? (임베디드 MCU에서 있어서 매우매우 중요한 개념입니다.)
    • Arm Core는 Arm 아키텍처 기반으로 설계된 CPU 코어입니다.
    • 예: Cortex-M0, Cortex-M4, Cortex-A53 등은 각각 하나의 Arm Core입니다.
    • 이 코어는 실제로 연산을 수행하는 연산 엔진(Execution Engine) 역할을 합니다.

2.  Arduino 개발환경에서 벗어나보자 (STM32 CUBE IDE)

STM32 제조사 공식 개발환경

  • Arduino는 다양한 임베디드 MCU를 최대한 추상화, 캡슐화하여 편리하게 API를 제공하는 개발툴입니다.
    실제로 개발 시에 학생이나 비전공자들은 로우 레벨한 코드를 작성할 필요가 없어 빠른 프로그래밍 개발이 가능한 것이죠. (추상화되고 숨겨져 있는 코드들과 동작 원리에 대해 모른 채 말이죠...) 사실 마이크로컨트롤러 제조사들은 Arduino를 위해 제품을 만들어내진 않습니다.
    Arduino는 단지 MCU 제조사들이 만든 칩셋 위에 Arduino 호환 보드를 만들고, 이를 Arduino IDE에서 쉽게 사용할 수 있도록 래핑(wrapping)한 것에 불과합니다.
  • 예를 들어, 
    • Arduino Uno는 Atmel사의 ATmega328P를 사용하고,
    • Arduino Due는 Atmel SAM3X8E (ARM Cortex-M3) 기반이며,
    • ESP32 보드 역시 Espressif 사의 칩을 이용한 Arduino 호환 보드입니다.
    즉, Arduino는 하드웨어 플랫폼이 아니라 개발환경과 추상화된 API 세트이며,
    다양한 제조사의 MCU를 지원하기 위한 중간 계층(wrapper layer)을 제공합니다.
  • Arduino는 흔히들 그래서 오픈소스 하드웨어(Open Source Hardware) 라고 불립니다.
    많이들 착각하시는 부분이, Arduino에서 만든 보드들이 Arduino IDE에서만 개발 가능한 줄로 알고 있는 것이죠.
  • Arduino는 MCU 제조사의 로우레벨 기능을 감추고, 초보자 친화적인 고수준 API로 포장한 프레임워크입니다.
  • 하지만 개발자가 성능 최적화나 고급 제어를 위해 로우레벨 개발환경(예: STM32CubeIDE, ESP-IDF 등)으로 넘어갈 경우,그 동안 Arduino가 감춰왔던 실제 MCU 동작 방식과 레지스터 제어, 인터럽트 처리, 메모리 구조 등을 정확히 이해해야 합니다.
  • 여기서 중요한 점은 MCU 마다 제조사에서 제공되는 HAL(Hardware Abstraction Layer) 구조는 모두 다르며, 우리는 해당 MCU의 HAL과 표준 라이브러리를 활용할 줄 알아야 됩니다. 
  • MCU 기반의 임베디드 개발자는 자신이 사용하는 MCU의 데이터시트를 꼼꼼히 분석하고 가지고 놀 줄 알 아야합니다. (개발자는 자신이 가진 무기와 도구들로 무언가를 창조해내는 역할입니다.)
  • Arduino는 입문자에게는 훌륭한 출발점이지만, 임베디드 개발자로서 성장하려면 반드시 그 너머의 세계를 이해해야 합니다. (STM32를 활용하기 위해 공식 STM32 Cube IDE를 사용합니다 ㅎㅎ)

3.  STM32 Cube IDE 설치

https://www.st.com/en/development-tools/stm32cubeide.html

 

STM32CubeIDE - STMicroelectronics

STM32CubeIDE - Integrated Development Environment for STM32, STM32CubeIDE-RPM, STM32CubeIDE-Lnx, STM32CubeIDE-Win, STM32CubeIDE-DEB, STM32CubeIDE-Mac, STMicroelectronics

www.st.com

 

 

다음에는 STM32 대표 개발보드인 NUCLEO 보드 회로도와 데이트시트를 분석해보겠습니다.