本帖最后由 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.有较好的解决办法吗?
多谢~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
while((UART5->SR&0X40)==0); //μè′y·¢Ëííê±Ï
for(i=1000;i>0; i--);
UART5->DR = 'T'; //·¢Ëíêy¾Y
while((UART5->SR&0X40)==0); //μè′y·¢Ëííê±Ï
for(i=1000;i>0; i--);
UART5->DR = 0x1A; //·¢Ëíêy¾Y
while((UART5->SR&0X40)==0); //μè′y·¢Ëííê±Ï
for(i=1000;i>0; i--);
要加for()的延迟才行吗?有没有别的方法,原子的例程也只用了while判断,为什么我这样写就不行?
for跟while没差啊
我说的while是判断寄存器这个方法:while((UART5->SR&0X40)==0);,并不是用while来延时
我想问的是我程序里while((UART5->SR&0X40)==0);这条语句起作用了吗?
如果没有话怎么改正?
一周热门 更多>