printf函数调用的是c库中的fputc函数。因此我们如果重新写了fputc函数,就可以改变printf函数的功能,可以向串口打印输出。同理scanf。
重定向printf
//重定向printf
int fputc(int ch,FILE* f)
{
//寄存器方式发送字符
while(!(USART1->ISR & 1<<7)){};
USART1->TDR=ch;
return ch;
}
重定向scanf
//重定向scanf
int fgetc(FILE* f)
{
//寄存器方式接收字符
uint8_t ch;
while(!(USART1->ISR & 1<<5)){};
ch=USART1->RDR;
return fputc(ch,NULL);
}