MCU 펌웨어 노트
레지스터 한 비트가 핀을 켜고, 타이머를 돌리고, 모터를 움직입니다. 임베디드 개발의 본체입니다.
개발 환경: LED 하나 켜기까지
STM32CubeIDE, 컴파일러, 디버거를 갖추고 첫 펌웨어를 올립니다. 첫 LED가 켜지면 툴체인 전체가 확인된 것입니다.
MCU 펌웨어레지스터 제어와 HAL: 언제 무엇을 쓸까
레지스터를 직접 쓰면 빠르고 정확하고, HAL을 쓰면 빠르게 개발합니다. 둘을 섞어 쓰는 현업 방식.
MCU 펌웨어GPIO: 핀 하나의 모든 설정
입력과 출력, 푸시풀과 오픈드레인, 풀업, 속도, 대체 기능. STM32 GPIO 레지스터 하나하나가 회로의 어떤 부분인지 정리했습니다.
MCU 펌웨어클럭 트리: 클럭이 어디서 와서 어떻게 나뉘나
HSE, PLL, 프리스케일러. 시스템 클럭과 버스 클럭, 타이머 클럭이 어떻게 정해지는지 따라갑니다.
MCU 펌웨어타이머: 정확한 주기와 시간 재기
타이머는 클럭을 세는 카운터입니다. 주기 인터럽트, 입력 캡처로 펄스 폭 재기, 엔코더 모드까지.
MCU 펌웨어PWM 기초: 듀티비로 평균 전압 만들기
디지털 핀으로 LED 밝기와 모터 속도를 조절하는 PWM의 원리와 타이머 설정 계산법을 정리했습니다.
MCU 펌웨어인터럽트와 NVIC: 우선순위와 짧은 처리
우선순위 그룹, 선점과 서브 우선순위, 처리 함수를 짧게 유지하는 이유, 공유 변수를 안전하게 다루는 법.
MCU 펌웨어ADC: 단일, 연속, 타이머 동기 샘플링
STM32 ADC의 변환 모드, 샘플링 시간, 여러 채널 스캔, 타이머 트리거로 정확한 주기 샘플링을 하는 방법.
MCU 펌웨어DMA 활용: ADC와 UART를 CPU 없이
ADC 값을 순환 버퍼로 계속 채우고, UART로 길이를 모르는 패킷을 받는 실전 DMA 설정 두 가지.
MCU 펌웨어워치독과 저전력 모드
프로그램이 멈추면 스스로 리셋하는 워치독, 배터리 기기를 위한 슬립, 스톱, 스탠바이 모드.
MCU 펌웨어Flash와 EEPROM에 설정값 저장하기
전원이 꺼져도 남아야 하는 값은 Flash나 EEPROM에 씁니다. 섹터 지우기, 쓰기 횟수, 전원 차단에 안전한 저장 방법.
MCU 펌웨어부트로더: 펌웨어가 스스로 업데이트하는 구조
Flash를 부트로더와 앱으로 나누고, 새 펌웨어를 받아 검증한 뒤 앱으로 점프합니다. 점프 순서와 실패 대비.