자세한 내용 보기

모두 보기

07강. 상태 머신(FSM) 패턴: 복잡한 if-else 지옥 탈출 (2)

"코드가 지저분해지는 건 실력이 아니라 패턴의 부재입니다." 실무 펌웨어 개발자가 전하는 FSM 패턴 도입 꿀팁과 흔히 하는 실수들을 정리했습니다. 신입 시절, 저는 if문을 5단계까지 중첩해서 쓴 적이 있습니다. 결과는 참담했죠. 수정 하나 하면 다른 곳에서 버그가 터졌거든요. 😭 선배에게 한 소리 듣고 배운 '상태 머신'은 제 개발 인생의 …

RichRich

07강. 상태 머신(FSM) 패턴: 복잡한 if-else 지옥 탈출 (1)

"아직도 if-else 문으로 복잡한 로직을 처리하시나요?" 펌웨어 설계의 꽃이라 불리는 상태 머신( FSM ) 패턴을 통해 스파게티 코드를 깔끔하게 정리하는 아키텍처 설계법을 전수해 드립니다. 반갑습니다, 후배님들! 10년 차 펌웨어 아키텍트입니다. 😊 STM32 실무를 하다 보면 센서 읽고, 모터 돌리고, 통신까지 해야 하는데 코드가 걷잡을 수 없이 복잡해지는 순간…

RichRich

06강. 버튼 입력 처리: 폴링(Polling)과 인터럽트의 공존 (2)

당신의 버튼 코드는 '견고'한가요? 단순히 동작만 하는 코드가 아니라, 어떤 노이즈에도 끄떡없는 전문가 수준의 버튼 처리 팁을 공유합니다. "분명히 코드대로 짰는데 왜 가끔 버튼이 안 눌릴까요?" 혹은 "왜 제멋대로 눌릴까요?" 솔직히 말씀드리면, 90%는 하드웨어 노이즈와 ISR 설계 미스 때문입니다. 오늘 제가 알려드리는 3가지…

RichRich

06강. 버튼 입력 처리: 폴링(Polling)과 인터럽트의 공존 (1)

"버튼만 누르면 시스템이 멈춰요!" 인터럽트 함수 내 금기 사항을 배우고, 메인 루프와 협업하는 'Flag 기반 설계' 가이드를 확인하세요. 신입 개발자들이 인터럽트(EXTI)를 처음 배우고 가장 먼저 하는 일이 뭘까요? 아마 버튼 콜백 함수 안에 ` printf `를 넣거나 ` HAL_Delay `를 넣는 일일 겁니다. 결과는? 시스템 먹통이죠. …

RichRich

05강. [실습] UART 통신 모듈화: printf 말고 통신 프로토콜 설계 (2)

당신의 펌웨어가 UART만 쓰면 느려지는 이유! 실무자들이 가장 많이 실수하는 Blocking 방식의 함정과 이를 해결하는 고수의 팁 5가지를 정리했습니다. 솔직히 말해서, 튜토리얼 예제에 나오는 ` printf ` 문구가 여러분의 프로젝트를 망치고 있을지도 모릅니다. 오늘은 제가 현업에서 수백 번 겪으며 정립한 '통신 프로토콜 설계 노하우' 를 아주 쉽게 풀어드릴…

RichRich

05강. [실습] UART 통신 모듈화: printf 말고 통신 프로토콜 설계 (1)

UART 통신, 단순히 printf 만 찍고 계신가요? 하드웨어 의존성을 제거하고 유연한 펌웨어를 만들기 위한 4단계 계층 분리 설계법을 공개합니다. 신입 사원 시절, 저도 ` HAL_UART_Transmit ` 함수 하나로 모든 걸 해결하려 했던 적이 있습니다. 하지만 기능이 늘어날수록 메인 루프가 버벅거리고, 하드웨어를 바꾸면 코드를 다 엎어야 하는 대참사가 일어났죠. 오늘은 그 '스파게티 지옥…

RichRich

04강. [실습] LED 드라이버 설계: HAL_GPIO_WritePin 숨기기 (2)

"핀 맵이 다 바뀌었대요!" 라는 청천벽력 같은 소식에도 웃으며 대처하는 법. HAL_GPIO_WritePin 을 직접 쓰는 습관을 버리고, OCP 원칙을 적용한 클린 코드 작성법 3가지를 정리했습니다. 솔직히 말해서, 프로젝트 초반에 짠 코드가 마지막까지 그대로 가는 경우는 거의 없습니다. 핀이 부족해서 다른 칩으로 기능을 넘기거나, 단가 문제로 MCU 기종이 바뀌기…

RichRich

04강. [실습] LED 드라이버 설계: HAL_GPIO_WritePin 숨기기 (1)

MCU 핀이 부족해서 LED 연결 방식이 바뀐다면? 프로젝트 막바지에 하드웨어가 변경되어도 당황하지 마세요. HAL 함수를 숨기고 인터페이스를 구축하여 main.c 를 완벽하게 보호하는 실전 설계법을 공개합니다. 후배 여러분, 상상해 보세요. 제품 출시를 한 달 앞두고 하드웨어 팀에서 찾아왔습니다. "핀이 부족해서 LED를 MCU 직접 제어가 아니라 I2C GPIO Exp…

RichRich
게시물 더보기
검색결과 없음