자세한 내용 보기

모두 보기

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

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

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

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