重定位函数如下:
int fputc(int ch, FILE *f)
{
/* Place your implementation of fputc here */
/* e.g. write a character to the USART */
/* Loop until the end of transmission */
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
{
}
USART_SendData(USART1, (uint8_t) ch);
return ch;
}
int fgetc(FILE *f)
{
int ch;
while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET)
{
}
ch = USART_ReceiveData(USART1);
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
{
}
USART_SendData(USART1, (uint8_t) ch);
return ch;
}
主函数如下:
int main(void)
{
char str[80];
ARC_COM_Init();
/* Enable USART */
USART_Cmd(USART1, ENABLE);
while(1)
{
printf("\ninput your string, max: 80\n");
scanf("%[^\n]s",str);
printf("your input string is\n%s\n", str);
}
}
我输入How are you?按回车后窗口只是回显这个句子,并没有显示your input ......,说明没有执行下句printf函数,这是为什么?看了好长时间的代码也不知道scanf函数是怎么回事。 |