자세한 내용 보기

모두 보기

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

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

RichRich

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

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

RichRich

03강. C언어 구조체와 함수 포인터 재발견

"왜 내 코드는 고칠 때마다 다른 데서 터질까?" 펌웨어 초보 시절 가장 많이 하는 고민이죠. 코드의 복잡성을 낮추고 전문가처럼 보이게 만드는 구조체와 함수 포인터 활용 꿀팁을 정리했습니다. 동료의 코드를 리뷰하다 보면, 온갖 소스 파일에 extern 으로 얽혀있는 전역 변수 더미를 볼 때가 있습니다. 솔직히 말해서, 그런 코드는 나중에 기능 하나 추가하려면 전체를 다…

RichRich

03강. C언어 구조체와 함수 포인터 재발견

C언어만으로 유연한 펌웨어를 만들 수 있을까요? 단순한 문법 공부를 넘어, 구조체와 함수 포인터를 활용해 하드웨어 의존성을 낮추고 재사용성을 극대화하는 펌웨어 설계의 정석을 공개합니다. 안녕하세요, 후배 개발자 여러분! 지난 강의에서 우리는 하드웨어 독립적인 코드의 중요성을 다뤘습니다. 하지만 막상 코드를 짜다 보면 "결국 레지스터 직접 건드려야 하는데 어떻게 나누라는 거야?&qu…

RichRich

임베디드 시니어가 알려주는 '좋은 코드'의 조건

"핀맵이 바뀌었다고요? 코드 다 고쳐야 하는데..." 이런 식은 땀 흘려보신 적 있나요? STM32 개발자가 흔히 저지르는 실수 3가지와, 유지보수가 쉬운 펌웨어를 만드는 '방화벽 코딩' 기법을 소개합니다. 10년 차 펌웨어 아키텍트입니다. 하드웨어 팀에서 "미안한데, 아트웍하다가 핀이 꼬여서 UART1 을 UART3 으로 바꿔야…

RichRich

02강. 하드웨어 추상화(HAL) 개념 잡기: AVR과 STM32의 차이

하드웨어 추상화 계층(HAL)이란 무엇일까요? 단순히 ST에서 주는 라이브러리를 쓰는 게 아닙니다. AVR 스타일의 코딩에서 벗어나, 하드웨어 변경에도 끄떡없는 견고한 펌웨어를 설계하는 핵심 비결을 공개합니다. 안녕하세요! 10년 차 펌웨어 아키텍트입니다. 여러분, 혹시 예전에 AVR(ATmega128 등)로 LED를 켤 때 기억나시나요? PORTA |= 0x01…

RichRich

01강. CubeMX가 만들어준 코드는 '완성'이 아니다.

CubeMX 코드는 끝이 아니라 시작입니다. 자동 생성된 main.c 에 비즈니스 로직을 채워 넣는 습관을 버리고, 유지보수 가능한 펌웨어 아키텍처의 첫걸음을 떼는 방법을 소개합니다.. 입사 후 처음 맡은 프로젝트, 열심히 main.c 의 /* USER CODE BEGIN */ 주석 사이에 코드를 짜넣었습니다. 그런데 갑자기 하드웨어 팀에서 "핀 맵이 조금 바뀌…

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