关于printf函数写串口问题

2019-07-20 18:35发布

关于写串口,要么全是自己写,要么用原子哥的printf函数,但最近把两者混合使用出了点问题,比如

while(1){
  USART_SendData(USART1,data);
  while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
  printf("i=%d ",i);
  delay_ms(1000);
}

如果单步调试,data i都能收到,但是程序一跑起来data就收不到,只能收到i。在  while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
后加个小延时就能收到data了,有没有哪位大神能讲讲其中的门道。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
正点原子
1楼-- · 2019-07-20 19:25
 精彩回答 2  元偷偷看……
hi我歌月徘徊
2楼-- · 2019-07-20 21:42
正点原子 发表于 2016-11-26 01:22
库函数的等待发送完成,改成:while((USART1->SR&0X40)==0);//等待发送结束,试试

如果把不适用printf函数,把重定向那一部分也屏蔽掉,为何程序就死在了某个地方呢?
正点原子
3楼-- · 2019-07-21 02:18
 精彩回答 2  元偷偷看……

一周热门 更多>