正点原子给的例程中fputc函数是这样写的
//重定义fputc函数
int fputc(int ch, FILE *f)
{
while((USART1->SR&0X40)==0);//循环发送,直到发送完毕
USART1->DR = (u8) ch;
return ch;
}
但是执行frintf时总是没有结果,经过调试发现当发送第一个字符的时候在while中调不出来。原因:虽然手册上说单片机启动时ST位是1,但是不知什么原因,在发送第一个字符之前ST位是0,于是将fputc函数改成如下就成功运行了。
int fputc(int ch, FILE *f)
{
USART1->DR = (u8) ch;
while((USART1->SR&0X40)==0);//循环发送,直到发送完毕
return ch;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>