一个关于串口的问题~

2019-07-21 04:56发布

串口发送数据时要检测发送完成标志TC,没有while((USART1->SR&0X40)==0); 会造成DR的溢出,但我看到的大部分代码都只是检测TC是否置1,没有TC的清零动作是为什么,不清零不会造成什么影响吗?
USART_SendData(USART1,0x1A);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
USART_SendData(USART1,0x1A);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
USART_SendData(USART1,0x1A);
while((USART1->SR&0X40)==0);
USART_SendData(USART1,0x1A);
while((USART1->SR&0X40)==0);

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
Ezel
1楼-- · 2019-07-21 08:51
 精彩回答 2  元偷偷看……
holy404290384
2楼-- · 2019-07-21 10:40
检查TXE更好,TC在发完最后一个字节再检查;
jiaoyubo12
3楼-- · 2019-07-21 13:18
Ezel 发表于 2019-2-28 17:17
看用户手册,读取SR时会硬件自动清TC

哦 ,谢啦~开始没有认真看这句话     由软件序列清除该位(先读USART_SR,然后写入USART_DR)。

一周热门 更多>