串口的标志位 USART_FLAG_TXE 和USART_FLAG_TC的理解;

2019-07-20 07:12发布

大家好,原子哥好;
我在看串口的内容,看到状态标志位的时候,发现USART_FLAG_TXE 和USART_FLAG_TC,如图;
我怎么感觉二者的作用是相同的呢?比如第一个标志位为1的时候,不就是代表寄存器的数据发送完毕了吗?
第二个为1不上也是表示数据发送完毕吗?那为什么还要搞两个呢,这不重复吗?
请各位大师指点,看看我的理解哪里有误,同时能给我讲讲二者区别最好了,帮忙指点;谢谢

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
dreamARM
1楼-- · 2019-07-20 20:36
hpeng1874 发表于 2015-9-2 11:05
1是该寄存器为空,可以往里存放数据
 2是该寄存器中的数据已全部发送完成

这两句话不是一个意思吗? 全部发完了,本来不就清空了吗?
chenghuayou
2楼-- · 2019-07-20 20:55
 精彩回答 2  元偷偷看……
网络孤客
3楼-- · 2019-07-20 23:38
 精彩回答 2  元偷偷看……
ldskendy
4楼-- · 2019-07-21 03:39
xuande 发表于 2015-9-11 07:41
回复【4楼】wolfcan:
---------------------------------
TXE是指“弹仓”空;
TC是“枪膛”空。

这个形象。
也就是说,你写数据到串口时,是装入弹仓,硬件会将数据移到枪膛,这时,TXE为1,TC为0,STM32硬件的TX脚正在发送数据,但你还可以装入数据到弹仓,装入后,TXE为0,TC为0.
TX发送完一个数据后,立即将数据从弹仓移入枪膛,这时,TXE为1,TC为0.
最后TX发送完数据,你又没有装入新数据,这时。TXE为1,TC为1.
江州小龙
5楼-- · 2019-07-21 04:46
发空标志,流控用
小胡子DIY
6楼-- · 2019-07-21 05:37
 精彩回答 2  元偷偷看……