OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5119|回复: 7

串口发送数据判断

[复制链接]

27

主题

99

帖子

0

精华

高级会员

Rank: 4

积分
852
金钱
852
注册时间
2013-12-25
在线时间
103 小时
发表于 2014-1-16 09:24:29 | 显示全部楼层 |阅读模式
正点原子的串口例程中有这么一个函数,我实在不明白程序中两次用到while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET); 是啥意思????每次各是啥意思????
各位高手解释一下吧。谢谢啊、、、、、、

void RS485_Send_Data(u8 *buf,u8 len)
{
 u8 t;
 RS485_TX_EN=1;   //设置为发送模式
   for(t=0;t<len;t++)  //循环发送数据
 {    
  while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);  
  USART_SendData(USART2,buf[t]);
 } 
 
 while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);  
 RS485_RX_CNT=0;  
 RS485_TX_EN=0;    //设置为接收模式 
}
海到无边天作岸?
山登绝顶我为峰
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

27

主题

99

帖子

0

精华

高级会员

Rank: 4

积分
852
金钱
852
注册时间
2013-12-25
在线时间
103 小时
 楼主| 发表于 2014-1-16 10:18:12 | 显示全部楼层
回复【3楼】kgp0213:
---------------------------------
没发数据以前  USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET,这个对吧??那第一个while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);   一直成立啊,怎么能执行下面的啊??
执行完USART_SendData(USART2,buf[t]);后,这个USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET成立对吧???再帮我解释一下吧,谢谢。。。。
海到无边天作岸?
山登绝顶我为峰
回复 支持 1 反对 0

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2012-3-23
在线时间
0 小时
发表于 2014-1-16 09:43:51 | 显示全部楼层
回复【楼主位】为你分心:
---------------------------------
等到发送完成再发送下一帧的意思。。。
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2010-12-29
在线时间
3 小时
发表于 2014-1-16 10:09:19 | 显示全部楼层
回复【楼主位】为你分心:

正点原子的串口例程中有这么一个函数,我实在不明白程序中两次用到while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET); 是啥意思????每次各是啥意思????
各位高手解释一下吧。谢谢啊、、、、、、
void RS485_Send_Data(u8 *buf,u8 len)
{
 u8 t;
 RS485_TX_EN=1;   //设置为发送模式
   for(t=0;t<len;t++)  //循环发送数据
 {     
  while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);     //判断 USART_FLAG_TC是否为0,若为0,则停在此处继续判断,一直判断下去,一旦 USART_FLAG_TC==1,(就意味着串  //口之前的数据传递结束),则while不成立,然后继续向下执行
  USART_SendData(USART2,buf[t]);
 }  
 
 while(USART_GetFlagStatus(USART2, US     //1楼说的不错,此处的while就是为了等待上面的 uart_sendData执行完毕。
......
---------------------------------
回复【楼主位】为你分心:

正点原子的串口例程中有这么一个函数,我实在不明白程序中两次用到while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET); 是啥意思????每次各是啥意思????
各位高手解释一下吧。谢谢啊、、、、、、
void RS485_Send_Data(u8 *buf,u8 len)
{
 u8 t;
 RS485_TX_EN=1;   //设置为发送模式
   for(t=0;t<len;t++)  //循环发送数据
 {     
  while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);   
  USART_SendData(USART2,buf[t]);
 }  
 
 while(USART_GetFlagStatus(USART2, US
......
---------------------------------
回复 支持 反对

使用道具 举报

27

主题

99

帖子

0

精华

高级会员

Rank: 4

积分
852
金钱
852
注册时间
2013-12-25
在线时间
103 小时
 楼主| 发表于 2014-1-16 10:17:59 | 显示全部楼层
回复【2楼】yongli_gong:
---------------------------------
没发数据以前  USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET,这个对吧??那第一个while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);   一直成立啊,怎么能执行下面的啊??
执行完USART_SendData(USART2,buf[t]);后,这个USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET成立对吧???再帮我解释一下吧,谢谢。。。。
海到无边天作岸?
山登绝顶我为峰
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2010-12-29
在线时间
3 小时
发表于 2014-1-16 11:39:28 | 显示全部楼层
回复【5楼】为你分心:

看注释: 2楼已经更新,自己看一下

回复【3楼】kgp0213:
---------------------------------
没发数据以前  USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET,这个对吧??那第一个while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);   一直成立啊,怎么能执行下面的啊??
执行完USART_SendData(USART2,buf[t]);后,这个USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET成立对吧???再帮我解释一下吧,谢谢。。。。

---------------------------------
呵呵
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2010-12-29
在线时间
3 小时
发表于 2014-1-16 12:27:58 | 显示全部楼层
回复【4楼】为你分心:

回复【2楼】yongli_gong:
---------------------------------
没发数据以前  USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET,这个对吧??[这个不对,没发数据以前是SET还是RESET是不确定的,所以才会再次判断一下,,传输结束TC才会变成1,否则就是0,如果是0则意味着传输未结束,所以就会一直在这里执行再判断的动作,知道TC变成1为止]那第一个while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);   一直成立啊,怎么能执行下面的啊??
执行完USART_SendData(USART2,buf[t]);后,这个USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET成立对吧???再帮我解释一下吧,谢谢。。。。

---------------------------------
回复 支持 反对

使用道具 举报

27

主题

99

帖子

0

精华

高级会员

Rank: 4

积分
852
金钱
852
注册时间
2013-12-25
在线时间
103 小时
 楼主| 发表于 2014-1-16 17:44:03 | 显示全部楼层
回复【7楼】kgp0213:
---------------------------------
理解了,十分感谢啊,这个问题困扰了我好几天了,非常非常感谢啊、、、、、、、、
海到无边天作岸?
山登绝顶我为峰
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-11 08:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表