inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

HAL, CubeMX, TrueSTUDIO를 이용한 STM32F4 무료 강좌

UART printf 사용하기

int _write 함수 관련 문의

568

진철

작성한 질문수 2

0

안녕하세요.  임베디드 초보입니다. 강의 잘듣고있습니다.

한가지 궁금한점이 있는데, _write 함수를 정의하시고, 이를 호출하는 부분이 없는데 어떻게 printf("Hello\n")만으로 len사이즈까지 글자를 출력하는지요...

정의하신 _write 함수 호출이 없는 데 문자열 출력이 되는 것이 이해가 가지 않습니다.

 다시 말해, printf함수로만 써서는(호출해서는) hello가 터미널로 출력이 되지 않는데 _write 함수 정의를 통해 호출없이 어떻게 터미널로 출력이 되는지요?..

질문의 요지가 이해가 안가실 수도 있는데, _write 함수를 호출하지 않은데 정의를 해준 것이 근본적인 의문입니다.

c 드론-개발 iot

답변 1

1

ChrisP

안녕하세요 답이 좀 늦었습니다.

질문에 대한 알림이 안떠서 확인이 늦었네요.

좋은 질문 입니다.

우리가 익히 알고있는 C언어의 문법으로는 해석이 불가능해 보이지만, IDE 마다 특수한 기능을 포함하고 있어서, _write() 함수 호출 없이도 자동으로 호출되는 거라고 이해하시면 됩니다.

TrueSTUDIO나 CubeIDE의 경우는 printf() 호출 시 그 안에서 _write()가 자동으로 호출됩니다.

따라서 우리가 명시적으로 _write() 를 호출하지 않아도 되는 것이죠.

(또한 사용자가 직접 printf() 함수 내부의 코드를 변경할 수 없습니다.)

_write() 함수를 정의하는 것을 출력 장치 재지정(?) 이라고 합니다. 영어로는 redirection 한다고 합니다.

이 redirection 하는 방법은 IDE마다 다른데, 만약 KEIL이나 IAR 같은 다른 IDE를 사용하신다면 다른 방식으로 정의해주어야 합니다.

redirection 하는 방법은 IDE의 매뉴얼에 소개되어있습니다.

이해가 좀 되셨는지 모르겠네요!

PWM 실시간 변경 시 ARR이 아닌 PSC 레지스터를 제어해야 하는 이유

0

161

1

클럭설정

0

320

1

SDIO구현

0

428

1

CANable 구매 후 STM32F407V_EduBoard_Ver1.22와 연결 뒤 통신이 안됩니다.

0

305

1

CAN 통신에 사용되는 CANable 보드의 펌웨어

0

1480

2

서보모터 질문

0

344

2

서보모터 제어

0

498

1

IrDA 통신

0

294

1

파일 생성이 되지 않습니다

0

326

1

파일이 없습니다.

0

357

1

사용 프로그램이 맞나요?

0

362

4

선택사항을 실행할 수 없으며 최신 실행 작업이 없습니다. 질문

0

541

1

TrueSTUDIO가 뜨지 않습니다.

0

594

1

pwm 주기 강의 질문드립니다.

0

519

1

가감속 테이블

0

411

1

개인정의 질문

0

352

1

임베디드 공부

0

560

1

새로운 모듈 새로운 라이브러리

0

354

1

포트 설정 문제

0

466

1

서보모터

0

275

1

예제코드, 회로도 요청드립니다.

0

238

1

보드 구매후 구매확정 하였습니다.

0

225

1

예제코드 및 회로도 요청 건

0

267

1

PWM 생성 주기에 따른 차이점은 어떤것이 있나요?

0

576

1