当你使用串口发送数据时是否出现这样的情况:
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).发送字符串“过程中“,主机掉电