stm32编程-有没无while(1)的影响

2019-10-16 01:43发布

int main(void)
{
        u8 time,data;
        RCC_Configuration();
        GPIO_Configuration();
        USART_Configuration ();
        data='A';
        for(time=0;time<20;time++){
        while(USART_GetFlagStatus( USART1,  USART_FLAG_TC)==RESET);
        USART_SendData(USART1,data);
        data++;
while(1);
}
为什么我在加上while(1)的时候串口窗口里收到的数据有20个,去掉while(1)的时候,只接受到19个,最后一个T丢失了

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
帅气迷人彬
1楼-- · 2019-10-17 01:03
aben 发表于 2016-12-13 08:56
我建议你 把这两句 while(USART_GetFlagStatus( USART1,  USART_FLAG_TC)==RESET);         USART_SendData ...

这两句话位置很关键!!!我重复试了好几次,发现如果倒一下,不管发送几个数据,第二个数据或者第一个数据总是没有的。其实我也很想问一下这是什么情况
帅气迷人彬
2楼-- · 2019-10-17 01:25
山峰雪狼 发表于 2016-12-13 08:52
不要凡事都和51比,两种的架构是不一样的

哎,刚学完51直接学32了。
帅气迷人彬
3楼-- · 2019-10-17 04:44
 精彩回答 2  元偷偷看……
aben
4楼-- · 2019-10-17 06:07
帅气迷人彬 发表于 2016-12-14 01:30
这两句话位置很关键!!!我重复试了好几次,发现如果倒一下,不管发送几个数据,第二个数据或者第一个数 ...

先说你的情况:首先 每发完一组串口数据 都要等待发送完成标志位 也就是这句while(USART_GetFlagStatus( USART1,  USART_FLAG_TC)==RESET); 干的事 而当你发完最后一组时 没有while(USART_GetFlagStatus( USART1,  USART_FLAG_TC)==RESET);这句了 这时 有没有while(1)就起作用了 我认为while(1)起到的作用就是while(USART_GetFlagStatus( USART1,  USART_FLAG_TC)==RESET);这句的作用 没有while(1)程序就跑飞了。
颠倒过来的情况:我建议你串口初始化完成后 延迟几百毫秒试一试
张旭东123
5楼-- · 2019-10-17 11:48
出现楼猪同样的问题 ·学习了
螃蟹爱虫
6楼-- · 2019-10-17 14:22
没while(1)就不知道程序要怎样运行了,未知状态。

一周热门 更多>