串口发送,检测是否完成

2019-07-25 11:20发布

本帖最后由 yzqgoodjob 于 2017-11-14 15:33 编辑

死循环中有下面三句:

{
//////////////////////////////////////
USART1->DR = 0x31;
while((USART1->SR&0x40)==0);
USART1->DR = 0x32;
/////////////////////////////////////

  ……
  ……
  ……
//
//

}
结果:

串口助手里只有一只接收到2222222222222……
(如果在两次写寄存器之间延迟1ms的花,1和2都能发送)


请教:
1.是什么原因造成只能成功发送2的?
2.是这句while((USART1->SR&0x40)==0);判断功能没有实现吗?
3.有较好的解决办法吗?


多谢~






友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
hgr211
1楼-- · 2019-07-26 01:45
你是while的啊,相当于
USART1->DR = 0x31;
while((USART1->SR&0x40)==0);
USART1->DR = 0x32;
USART1->DR = 0x31;
while((USART1->SR&0x40)==0);
USART1->DR = 0x32;
USART1->DR = 0x31;
while((USART1->SR&0x40)==0);
。。。
yzqgoodjob
2楼-- · 2019-07-26 02:24
hgr211 发表于 2017-11-15 08:41
你是while的啊,相当于
USART1->DR = 0x31;
while((USART1->SR&0x40)==0);

恩对 后来我也意识到了

一周热门 更多>