카드뉴스










예제가 멈추는 지점은 바꾼 값 밖에 있을 수 있다
원본 보드에서 잘 돌던 예제도 핀이나 주파수를 조금 바꾸면 쉽게 멈춘다. 핀 번호, baud rate, ADC 채널, Timer prescaler 같은 숫자는 단순한 옵션이 아니다. 회로의 연결과 시간 기준을 코드에 이어 주는 값이다. 역할을 모른 채 숫자만 바꾸면 함께 조정해야 할 설정을 놓치게 된다.
예를 들어 UART 송신에는 주변장치 클럭, TX/RX 핀의 Alternate Function, baud rate와 UART enable이 함께 필요하다. PWM도 Timer 입력 클럭, prescaler, period, 채널 설정이 맞아야 신호가 나온다. 함수 한 줄을 복사하는 것과 기능이 성립하는 조건을 옮기는 일은 다르다.
예제는 초기화와 연결 관계로 읽는다
먼저 예제가 무슨 기능을 만드는지 한 문장으로 적는다. 이어서 사용하는 핀과 주변장치, 초기화 함수, 핵심 파라미터, enable 순서를 표시한다. `Init`, `Config`, `Enable`, 반복 실행 구간이 어떻게 이어지는지 따라가면 수정할 범위가 보인다.
코드 밖의 조건도 빠뜨릴 수 없다. 보드가 달라지면 LED 핀, 커넥터 배선, 외부 클럭과 전압 레벨이 달라질 수 있다. UART라면 TX/RX 교차와 공통 GND를 확인하고, 센서나 액추에이터를 연결했다면 해당 보드의 회로도와 핀맵부터 대조한다.
한 번에 한 값만 바꾸고 결과를 측정한다
LED 핀을 바꿨다면 GPIO 포트와 클럭, 출력 모드를 함께 추적한다. UART baud rate를 바꿀 때는 MCU 쪽 설정과 터미널 설정을 맞춘다. PWM 주파수는 Timer 클럭, prescaler, period의 관계를 계산한 뒤 오실로스코프로 주기를 확인한다. ADC 채널을 바꿨다면 핀의 아날로그 모드와 입력 전압도 함께 본다.
여러 값을 동시에 고치면 성공해도 어떤 변경이 영향을 줬는지 알기 어렵다. 변경 전 예상 결과를 적고 로그, 디버거, 멀티미터, 로직 애널라이저나 오실로스코프로 실제 결과를 비교해야 실패도 다음 수정의 근거가 된다.
복사한 코드를 내 것으로 만드는 다섯 질문
예제를 읽고 나서 무슨 기능인지, 어떤 핀과 주변장치를 쓰는지, 반드시 맞아야 할 설정은 무엇인지 설명해 본다. 이어서 한 값을 바꾸면 무엇이 함께 달라지는지, 결과를 어떤 신호와 도구로 확인할지도 답할 수 있어야 한다.
답이 막히는 부분만 다시 초기화 코드와 회로도에서 찾으면 학습 범위가 선명해진다. 작은 기능 하나를 정해 설정을 한 항목씩 바꾸고, 예상값·측정값·차이가 난 이유를 짧게 기록해 보자. 예제는 외울 완성본보다 코드와 하드웨어를 연결해 보는 실험 기준에 가깝다.