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

2019-07-20 07:12发布

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

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
xlve
1楼-- · 2019-07-21 09:37
 精彩回答 2  元偷偷看……
mastergz
2楼-- · 2019-07-21 10:09
赞一个
pcqboys
3楼-- · 2019-07-21 10:28
 精彩回答 2  元偷偷看……
xiatianyun
4楼-- · 2019-07-21 11:39
很形象的比喻。
我的理解是这样的,如果用装在枪上的弹夹比作移位寄存器,用拿在右手里的弹夹比作数据寄存器,用弹夹袋比作数据缓冲区,那么右手空意味着没有弹夹了,没有数据可以再装弹了,此时枪上的弹夹不一定发射完毕,TXE置位,要求右手尽快拿出弹夹。如果弹袋空且右手空且上膛的弹夹也发射完毕,此时TXE置位、TC也置位。
在连续多个弹夹供弹下,则右手把弹夹上膛后,发出TXE标识,要求再拿出一个弹夹准备装载。在弹袋空右手空且弹夹已经发射完毕,则TXE置位,TC置位。
如果弹仓只有一个弹夹,装载该弹夹后右手空,TXE置位。在发射完毕后不仅TXE置位,TC也置位。