일단 Cube Mx 또는 예전의 Std 라이브러리 등을 이용하여 VCP를 활성화 합니다.

 

USB선택후 Device 선택한뒤 (우측의 USB_DP / USB_DM 이 자동 선택됨)

USB_DEVICE 에서 Communication Device 를 선택합ㄴ디ㅏ. (그럼 VCP 기능이 사용 가능)

 


본인은 IDE 툴은 uVision 을 사용하므로 프로젝트 옵션에서 
printf 를 제공하는 MicroLib를 체크 합니다.

사용자 삽입 이미지

 

일반적으로 Main.c 에 하기 내용을 추가 합니다.

 


struct __FILE{int handle;};

FILE __stdout;

int fputc(int c, FILE *f);



 

VCP 라이브러리에서 CDC_Transmit_HS 함수 또는 FS로 되어있는 함수가 생성되면

main 함수에 Extern 선언하여 하기와 같이 사용 하면 됩니다.

 


int fputc(int c, FILE *f)

{

uint8_t temp;



temp= (uint8_t)c;

CDC_Transmit_HS(&temp,1); // 실제 출력 함수 설정.

return c;

}

 

 

이후에

printf 함수를 사용하면 정상적으로 출력 됨을 확인 가능.

 

 

추가사항.

간혹 VCP 관련 하여 장치관리장에서 정상적으로 인식 되지 않는 이슈가 있으며 (어떤PC마다 될때 있고 안될때가 있음)

해당 사항 발생시 startup_stm32fxxx.S 로 시작되는 파일을 열면 어셈으로 되있는 부분에서

Stack_Size        EQU     0x800

Heap_Size      EQU     0x800

 

스택 및 힙사이즈를 늘려서 재컴파일 해봐야함.

#printf, #디버깅, #cortex-M3, #cortex-M4, #VCP

크리에이티브 커먼즈 라이센스
Creative Commons License
2017/08/02 00:13 2017/08/02 00:13

Trackback Address >> 이 글에는 트랙백을 보낼 수 없습니다

댓글을 달아 주세요