[MCU] 在这段时间内不能做其它事情了?

[复制链接]
697|17
 楼主| heweibig 发表于 2019-7-13 16:20 | 显示全部楼层 |阅读模式
当串口通讯发送多个字节的时候 (比如根据通讯协议一次要发送几十个字节)

而通讯baud又很低,比如只有600bps,那么在发送的过程中,MCU是不是

在这段时间内不能做其它事情了?
shimx 发表于 2019-7-13 16:25 | 显示全部楼层
我也对这个困惑过,必须等MCU发送完成吗?
 楼主| heweibig 发表于 2019-7-13 16:28 | 显示全部楼层
是啊,而在接收多个字节的时候,我到是比较容易想通,因为收到一个字节后,直到下一个字节收完为止,这段时间MCU可以去做其它事情,但是发送的时候是什么样的机制呢?
wuhany 发表于 2019-7-13 16:30 | 显示全部楼层


可以开个缓冲用中断发.
shimx 发表于 2019-7-13 16:34 | 显示全部楼层
发送和接收都有相应的中断标志位,发送完自动值位,查询相应标志位即可。
jiaxw 发表于 2019-7-13 16:41 | 显示全部楼层

所谓发送就是把要发送的数据写入SBUF
所谓接受就是从SBUF读取数据
spark周 发表于 2019-7-13 16:44 | 显示全部楼层

是的,这些指令占用的时间太少了 无非就是一个或者几个机器周期嘛
当然之前会有一些配置的操作
shimx 发表于 2019-7-13 16:47 | 显示全部楼层
至于是低波特率还是高波特率并不会影响这个操作
liliang9554 发表于 2019-7-13 16:52 | 显示全部楼层
是,数据串行出去或者串行接受的过程都是有硬件本身完成的 完成之后会置位相关的标志位
午夜粪车 发表于 2019-7-13 16:55 | 显示全部楼层

如果中断允许会引起相关中断
编程的时候要合理安排任务的运行
zhaoxqi 发表于 2019-7-13 17:00 | 显示全部楼层


避免发送数据流时不要搞得不连续
huangchui 发表于 2019-7-13 17:03 | 显示全部楼层
是,还得避免接受数据流时不要造成数据覆盖
jiajs 发表于 2019-7-13 17:07 | 显示全部楼层
波特率太低的话,可以用中断发。
zhenykun 发表于 2019-7-13 17:09 | 显示全部楼层
可以考虑为中断方式完成串口通信,这样虽然是连续发送,MCU还是可以完成其他的指令的。
jlyuan 发表于 2019-7-13 17:15 | 显示全部楼层
没有必要一直等嘛
 楼主| heweibig 发表于 2019-7-13 17:19 | 显示全部楼层
多谢六楼七楼一系列的经验
yszong 发表于 2019-7-13 17:23 | 显示全部楼层

把数据放到UART的发送缓存器中后就干其他的事的呗。,,9600的波特率的时间是够的。
 楼主| heweibig 发表于 2019-7-13 17:27 | 显示全部楼层
哦,那我就知道怎么回事了,多谢大家,结贴了哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

869

主题

13089

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部