单片机串口

2019-07-15 15:49发布

请问大家,单片机的串口是不是在进行一次发送和接收后,得隔一段时间后才能开始进行新的发送和接收哦?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
andy_wsj
1楼-- · 2019-07-15 16:29
小工兵 发表于 2015-10-27 12:18
等到其接收标志位置1后就可以进行第二次发送?我的是让单片机自发自收的

接受标志跟发送不是一定相关的
就是说接收标志为1,只能说收到一个字节,不代表发送已经完成
发送标志为1的时候,表示发送已经完成,可以发下一个
你说的自发自收,我理解是一个测试程序,收到一个字节就返回一个字节,或者就是单片内部调试的自发自收
但无论如何,发送标志为1,才表示一个字节发送完毕
最佳答案
andy_wsj
2楼-- · 2019-07-15 17:05
发送和接收都有一个标志位,指示数据是否已经发送或接收完成,只要完成就可以进行下一个发送
一般来说,可以做成中断,发送或接收完成都可以产生中断,然后发下一个字节
如果想节省CPU开销或数据较多,可以使用DMA方式,前提是你的CPU支持这些操作,例如STM32的就可以用DAM
小工兵
3楼-- · 2019-07-15 18:43
andy_wsj 发表于 2015-10-27 10:58
发送和接收都有一个标志位,指示数据是否已经发送或接收完成,只要完成就可以进行下一个发送
一般来说,可以做成中断,发送或接收完成都可以产生中断,然后发下一个字节
如果想节省CPU开销或数据较多,可以使用DMA方式,前提是你的CPU支持这些操作,例如STM32的就可以用DAM ...

等到其接收标志位置1后就可以进行第二次发送?我的是让单片机自发自收的
小工兵
4楼-- · 2019-07-15 21:03
 精彩回答 2  元偷偷看……
smartpig
5楼-- · 2019-07-15 22:15
发送或接收完一帧数据就会申请中断,看看教材吧
andy_wsj
6楼-- · 2019-07-16 03:25
小工兵 发表于 2015-10-27 12:18
等到其接收标志位置1后就可以进行第二次发送?我的是让单片机自发自收的

如果自发自收,理论上,发送完成和接收都完成才能发下一个,但这个时间很短,看上去就像同时完成一样
任何时候,无论自发自收还是对外通信,发送标志完成之后,再发下一个才是可靠的;接收标志完成并且被复位之后,才会接收下一个,否则后面的数据可能丢掉了
如果是外部设备给单片机发送数据,一般使用中断接收,一旦收到数据,进入中断,将数据立即拷入内存,以免影响下一个字节,一般来说这个过程很快。如果使用查询,那么代码量很大的时候,可能会影响下一个字节,这种情况一般较少
一些单片机的发送和接收有影子寄存器,例如程序将数据写到发送寄存器,单片机自动将发送寄存器写入影子寄存器,这时候发送就已经完成,标志变1,但实际数据可能还没发出去

一周热门 更多>