STM32 질문/답변

uart통신으로 scanf 사용에 관해 질문합니다.

hohlol 0 764 02.19 14:46

터미널 프로그램으로 tera term을 사용중입니다.

scanf로 입력받은 문자에 따라

원하는 기능이 실행되도록 코드를 짰습니다.

 

질문하고 싶은 것은

1. HAL_UART_Receive_IT 를 써야할지 

HAL_UART_Receive를 써야할지 감이 안옵니다. 

 

또한

2. printf와 scanf를 사용하기 위해서 아래의 내용을 main.c안에 작성하였습니다. 동일 코드 안에서 printf는 제대로 실행됩니다.

하지만 현재 문제가 되는 부분은 scanf입니다. 왜 안되는것인지 알수 있을까요?

 

 

#ifdef __GNUC__

  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)

  #define GETCHAR_PROTOTYPE int __io_getchar(void)

#else

  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)

  #define GETCHAR_PROTOTYPE int fgetc(FILE *f)

#endif /* __GNUC__ */

 

 

 

void  __io_putchar(uint8_t ch) {

HAL_UART_Transmit(&huart3, &ch, 1 , 1 );

}

 

int  __io_getchar(void) {

HAL_StatusTypeDef Status = HAL_BUSY;

uint8_t Data;

 

while(Status != HAL_OK)

Status = HAL_UART_Receive(&huart3, &Data, 1 , 10 ); //여기를 HAL_UART_Receive_IT로 써야할지 궁금합니다.

 

return Data;

}

 

 

 

 

Comments

Category
Facebook Twitter GooglePlus KakaoStory NaverBand