相关寄存器
参考例程
//重定向C库函数printf到数据发送寄存器(USART_TDR)
int fputc(int ch,FILE *fp)
{
//当寄存器第7位为0时,表示没有数据被传到移位寄存器
//当寄存器第7位为1时,表示表示有数据被传到移位寄存器,发送数据寄存器为空
while(!(USART1->ISR & 1<<7));
//向串口发送
USART1->TDR = ch;
return ch;
}
//重定向完成
此时使用printf的效果
//重定向c库函数sacnf到数据接收寄存器(USART_RDR)
int fgetc(FILE * fp)
{
//定义ch来保存从串口接受的数据
int ch;
//当寄存器第5位为0时,表示没有收到数据
//当寄存器第5位位1时,表示收到的数据已经可读
while(!(USART1->ISR & 1<<5));
ch = USART1->RDR;
//调用之前封装的输出重定向函数
return fgetc(ch,NULL);
}
使用scanf效果