OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3358|回复: 4

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

[复制链接]

52

主题

147

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2019-4-1
在线时间
118 小时
发表于 2019-7-5 12:06:31 | 显示全部楼层 |阅读模式
1金钱
阿波罗开发板,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是如何被清零的。
是硬件自动清零的吗?具体是怎样的过程?求高手指教,谢谢!


最佳答案

查看完整内容[请看2#楼]

就是说你去写数据到DR寄存器后 这个标志位就自动清零的。就不用我们软件置0的
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

35

主题

560

帖子

2

精华

资深版主

Rank: 8Rank: 8

积分
17769
金钱
17769
注册时间
2018-3-3
在线时间
523 小时
发表于 2019-7-5 12:06:32 | 显示全部楼层
jshzp 发表于 2019-7-5 13:09
感谢回复,其实我就是没看懂资料里红框的这句话的意思才来发帖咨询的。
一般情况下,在写DR时,由硬件自 ...

就是说你去写数据到DR寄存器后  这个标志位就自动清零的。就不用我们软件置0的
/*
*
*
*
*
*
*/
回复

使用道具 举报

35

主题

560

帖子

2

精华

资深版主

Rank: 8Rank: 8

积分
17769
金钱
17769
注册时间
2018-3-3
在线时间
523 小时
发表于 2019-7-5 12:54:30 | 显示全部楼层
无标题.png
/*
*
*
*
*
*
*/
回复

使用道具 举报

52

主题

147

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2019-4-1
在线时间
118 小时
 楼主| 发表于 2019-7-5 13:09:44 | 显示全部楼层

感谢回复,其实我就是没看懂资料里红框的这句话的意思才来发帖咨询的。
一般情况下,在写DR时,由硬件自动清除TC,不需要软件去清除,是这么理解吗?
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2019-7-4
在线时间
8 小时
发表于 2019-7-5 14:03:29 | 显示全部楼层
可以理解为发送一个数据后,标志位置位。发送第二个数据时,数据进入DR寄存器(可以看做DR寄存器被写入数据),标志位被清0。然后while循环等待发送完成(标志位置位)。也不是很明白,目前这样理解!!!请大神及时纠正
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-11 08:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表