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

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

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

在这段时间内不能做其它事情了?
jiaxw 发表于 2017-7-16 21:23 | 显示全部楼层
我也对这个困惑过,必须等MCU发送完成吗?
 楼主| wuhany 发表于 2017-7-16 21:24 | 显示全部楼层

是啊,而在接收多个字节的时候,我到是比较容易想通,因为收到一个字节后,直到下一个字节收完为止,这段时间MCU可以去做其它事情,但是发送的时候是什么样的机制呢?
liliang9554 发表于 2017-7-16 21:26 | 显示全部楼层

可以开个缓冲用中断发.
zhaoxqi 发表于 2017-7-16 21:30 | 显示全部楼层

发送和接收都有相应的中断标志位,发送完自动值位,查询相应标志位即可。
jiajs 发表于 2017-7-16 21:31 | 显示全部楼层

所谓发送就是把要发送的数据写入SBUF
所谓接受就是从SBUF读取数据
zhanghqi 发表于 2017-7-16 22:07 | 显示全部楼层

在处理器发送数据时,应该进行设置一些标志位,我觉得可以做其它事。
zhanghqi 发表于 2017-7-16 22:10 | 显示全部楼层

是的,这些指令占用的时间太少了 无非就是一个或者几个机器周期嘛
当然之前会有一些配置的操作
pangb 发表于 2017-7-16 22:12 | 显示全部楼层

至于是低波特率还是高波特率并不会影响这个操作
chenjunt 发表于 2017-7-16 22:15 | 显示全部楼层

不你不需要等待发送完成信号的话 就可以做别的了
yszong 发表于 2017-7-16 22:17 | 显示全部楼层

是,数据串行出去或者串行接受的过程都是有硬件本身完成的 完成之后会置位相关的标志位
heweibig 发表于 2017-7-16 22:19 | 显示全部楼层

如果中断允许会引起相关中断
编程的时候要合理安排任务的运行
jiahy 发表于 2017-7-16 22:21 | 显示全部楼层

避免发送数据流时不要搞得不连续
lizye 发表于 2017-7-16 22:23 | 显示全部楼层

是,还得避免接受数据流时不要造成数据覆盖
shimx 发表于 2017-7-16 22:26 | 显示全部楼层

波特率太低的话,可以用中断发。
jiaxw 发表于 2017-7-16 22:29 | 显示全部楼层


差不多这些了,楼主总结下就行了
spark周 发表于 2017-7-16 22:32 | 显示全部楼层
如果有缓存的话 那就不需要等待了
liliang9554 发表于 2017-7-16 22:33 | 显示全部楼层

一般不会的
串口是独立的吧,一般设定一个字节中断一次
接受过程中
cpu自己个人会运行
只有标志位来了才做响应的处理!!!!!!!!!!!!
zhaoxqi 发表于 2017-7-16 22:35 | 显示全部楼层

在单片机接受数据或者发送数据时   通过开启sbuf缓冲中断   可以让单片机去做别的事情   当标志位到来时   触发中断   单片机继续执行数据接受或发送任务   呵呵
zhaoxqi 发表于 2017-7-16 22:37 | 显示全部楼层

就不能把波特率提高吗,一般接受的时候没法做其他事
您需要登录后才可以回帖 登录 | 注册

本版积分规则

879

主题

10435

帖子

4

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