Bare Metal C — NUCLEO F439ZI - Hongjayeong-02/Basic_SoC_implementation GitHub Wiki

📘 Bare-Metal Embedded C — NUCLEO-F439ZI

Packt Bare-Metal Embedded C Programming(Israel Gbati) 원서 18개 챕터를 NUCLEO-F439ZI(STM32F439ZIT6) 보드로 실습하면서, 이론+코드+코드 설명+실습 결과를 정리한 공간입니다. HAL/CubeMX 없이 레지스터를 직접 조작하는 베어메탈 방식으로, GitHub 저장소 bare-metal-c-nucleo-f439zi의 코드/README를 바탕으로 하되, 여기서는 레지스터 원리와 왜 그렇게 동작하는지를 더 깊게 다룹니다.

이 정리의 원칙

  • 챕터마다 이론 → 코드 → 코드 설명 → 실습 결과 → 시험 대비 핵심 정리 순서로 구성
  • "정리본만 읽어도 이해된다"를 목표로 함 — 배경지식 없이도 읽히게 개념부터 설명, 특히 "왜 코드를 이렇게 쓰는가"(코드 작성 원리)를 각 챕터 3절에서 집중적으로 다룸
  • 실습 결과는 실제 보드에서 확인한 것만 "✅ 실기 검증"으로 표시하고, 그렇지 않은 건 솔직하게 표시
  • 클라우드 환경에서는 실제 보드 플래시가 불가능하므로 코드 작성 + 빌드(컴파일/링크) 검증까지 진행하고, 실기 검증은 로컬 STM32CubeIDE + 실제 보드에서 별도로 진행

🎉 18개 챕터 전체 정리 완료

원서 실습 18개 챕터 + 기초 개념 primer(00) 전부 작성 완료했습니다. 아래 목록에서 각 페이지로 들어가면 됩니다.

챕터 목록

Ch 주제 실기 검증 페이지
00 시작하기 전에 — 베어메탈 C 필수 개념 - Bare-metal-C-00-필수개념
01 툴체인 설정 (Linux CLI) - Bare-metal-C-Ch01-툴체인설정
02 메모리 주소로 레지스터 직접 정의 - Bare-metal-C-Ch02-레지스터-직접정의
03 빌드 과정 / GNU 툴체인 - Bare-metal-C-Ch03-빌드과정과-GNU툴체인
04 링커스크립트 + 스타트업 - Bare-metal-C-Ch04-링커스크립트와-스타트업
05 Make 빌드 시스템 - Bare-metal-C-Ch05-Make빌드시스템
06 CMSIS - Bare-metal-C-Ch06-CMSIS
07 GPIO - Bare-metal-C-Ch07-GPIO
08 SysTick - Bare-metal-C-Ch08-SysTick
09 범용 타이머(TIM) - Bare-metal-C-Ch09-TIM
10 UART - Bare-metal-C-Ch10-UART
11 ADC - Bare-metal-C-Ch11-ADC
12 SPI (+ADXL345) ⚠️ 센서 모듈 없음 Bare-metal-C-Ch12-SPI
13 I2C (+ADXL345) ⚠️ 센서값 미검증 Bare-metal-C-Ch13-I2C
14 외부 인터럽트(EXTI) ✅ Bare-metal-C-Ch14-EXTI
15 RTC ✅ Bare-metal-C-Ch15-RTC
16 Independent Watchdog(IWDG) ✅ Bare-metal-C-Ch16-IWDG
17 DMA ✅ Bare-metal-C-Ch17-DMA
18 저전력 모드 (Standby) ⚠️ 웨이크업 미검증 Bare-metal-C-Ch18-StandbyMode

자세한 내용과 이유는 Bare-metal-C-00-필수개념 페이지 10절 참고.


전체 코드는 각 챕터 페이지 안에 포함되어 있고, 실제 프로젝트 코드/README는 GitHub 저장소 bare-metal-c-nucleo-f439zi에 있습니다.

⚠️ **GitHub.com Fallback** ⚠️