串口发送时,发送完成标志位是怎么处理的?

2019-07-20 00:57发布

阿波罗开发板,F429,串口通信实验,串口发送数据的有关代码如下:
  1. for(t=0;t<len;t++)
  2.                         {
  3.                                 USART1->DR=USART_RX_BUF[t];
  4.                                 while((USART1->SR&0X40)==0);//等待发送结束
  5.                         }
复制代码向串口赋值后,通过测试SR寄存器的TC标志位,等待该次发送完成,然后再发送下一个数据。
当本次数据发送完成,TC被置位后,从代码中看不出来在进入下一个数据发送前,TC是如何被清零的。
是硬件自动清零的吗?具体是怎样的过程?求高手指教,谢谢!


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
Psheng
1楼-- · 2019-07-20 03:59
 精彩回答 2  元偷偷看……
Psheng
2楼-- · 2019-07-20 07:12
无标题.png
jshzp
3楼-- · 2019-07-20 08:00
 精彩回答 2  元偷偷看……
luoyekj
4楼-- · 2019-07-20 10:46
可以理解为发送一个数据后,标志位置位。发送第二个数据时,数据进入DR寄存器(可以看做DR寄存器被写入数据),标志位被清0。然后while循环等待发送完成(标志位置位)。也不是很明白,目前这样理解!!!请大神及时纠正

一周热门 更多>