解读STM32串口发送的两个标志位 "USART_FLAG_TXE" & "USART_FLAG_TC"

本文介绍了在使用STM32进行串口通信时,遇到字节丢失问题的原因及解决方法。重点解析了串口发送流程,特别是标志位USART_FLAG_TXE(数据缓冲区为空)和USART_FLAG_TC(数据发送完成)的含义。通过案例分析了发送过程中遇到的异常情况,如主机或从机掉电、待机或停机,导致的发送失败,并提供了避免这类问题的解决方案。
摘要由CSDN通过智能技术生成

当你使用串口发送数据时是否出现这样的情况:
1.发送时第一个字节丢失。
2.发送时出现莫名的字节丢失。
3.各种情况字节丢失。
没错,我都遇到过,哈哈哈

1.先了解一下串口发送的流程图(手动描绘):
可以假象USART_FLAG_TXE是"弹仓",USART_FLAG_TC是"弹膛",对应"数据缓冲区"和"移位寄存器"!
在这里插入图片描述

数据缓冲区为空时:USART_FLAG_TXE=1
数据缓冲区为"空"并且"移位寄存器也发送数据到TX信号"后":USART_FLAG_TC=1

2.那么有必要更深入了解一下 “USART_FLAG_TXE” & “USART_FLAG_TC”:
USART_FLAG_TXE:表示数据缓冲区是否为空,为空时置1,表示可以写数据到数据缓冲区,有可能数据没有发送完。
USART_FLAG_TC:表示数据缓冲区的数据发送是否完成。如果最后一次发送到数据缓冲区的数据完成了从移位寄存器到
信号线TX时,才置1,表示数据发送完成,也就是说,这个标志位真正表示数据发送完成。

3.发送时的特殊情况:
1).发送字符串“过程中“,主机掉电

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值