제어문: 펌웨어가 무한 루프인 이유
if, switch, for, while로 흐름을 만들고, 임베디드 프로그램이 끝나지 않는 루프로 짜이는 이유를 봅니다.
PC 프로그램은 일을 마치면 종료합니다. MCU에는 돌아갈 운영체제가 없으므로 main은 끝나면 안 됩니다. 그래서 거의 모든 펌웨어가 초기화 뒤 무한 루프로 이루어집니다.
int main(void) {
init_clock();
init_gpio();
while (1) {
read_sensor();
update_control();
send_status();
}
}
제어문 고르기
- if / else: 조건이 두세 개일 때
- switch: 상태나 명령 번호처럼 값 하나로 갈라질 때.
break를 빠뜨리면 다음 case까지 실행됩니다. - for: 횟수가 정해진 반복
- while: 조건이 바뀔 때까지 기다리는 반복. 플래그를 기다리는 루프에는 반드시 타임아웃을 둡니다.
기다리는 루프의 함정
while (!(USART->SR & TXE));처럼 하드웨어 플래그를 기다리는 코드는 하드웨어가 응답하지 않으면 영원히 멈춥니다. 카운터나 타이머로 빠져나갈 길을 만들어 두는 것이 현업의 기본입니다.
영상으로 이어 보기공부법과 진로 시리즈 15편2025 임베디드 프로그래밍 공부 순서 | 공부 방법 | 로드맵PROJECT COURSEC 문법을 실제 펌웨어 코드로 써 보고 싶다면밸런싱 로봇 하나를 요구사항, 회로와 PCB, 펌웨어, 앱까지 실무 순서대로 만드는 강의입니다. 10파트 165강.강의 살펴보기 →FREE PDF무료 전자책 3권 받기이 주제를 한 권으로 이어서 읽고 싶다면. BLDC 모터 제어, 직렬통신, 센서를 책 분량으로 묶었습니다. 이메일만 남기면 바로 받습니다.무료로 받기 →