打印

串口通讯发送多个字节的时候

[复制链接]
633|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhuww|  楼主 | 2018-12-10 14:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
比如根据通讯协议一次要发送几十个字节

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

在这段时间内不能做其它事情了?
沙发
zhanglli| | 2018-12-10 14:21 | 只看该作者

我也对这个困惑过,必须等MCU发送完成吗?

使用特权

评论回复
板凳
lium| | 2018-12-10 14:24 | 只看该作者
是啊,而在接收多个字节的时候,我到是比较容易想通,因为收到一个字节后,直到下一个字节收完为止,这段时间MCU可以去做其它事情,但是发送的时候是什么样的机制呢?

使用特权

评论回复
地板
guoyt| | 2018-12-10 14:35 | 只看该作者
可以开个缓冲用中断发.

使用特权

评论回复
5
hanwe| | 2018-12-10 14:44 | 只看该作者
发送和接收都有相应的中断标志位,发送完自动值位,查询相应标志位即可。

使用特权

评论回复
6
yufe| | 2018-12-10 14:48 | 只看该作者

所谓发送就是把要发送的数据写入SBUF
所谓接受就是从SBUF读取数据

使用特权

评论回复
7
llia| | 2018-12-10 14:51 | 只看该作者


是的,这些指令占用的时间太少了 无非就是一个或者几个机器周期嘛
当然之前会有一些配置的操作

使用特权

评论回复
8
wangpe| | 2018-12-10 14:54 | 只看该作者

至于是低波特率还是高波特率并不会影响这个操作

使用特权

评论回复
9
langgq| | 2018-12-10 14:58 | 只看该作者
是,数据串行出去或者串行接受的过程都是有硬件本身完成的 完成之后会置位相关的标志位

使用特权

评论回复
10
zhuww|  楼主 | 2018-12-10 15:03 | 只看该作者

如果中断允许会引起相关中断
编程的时候要合理安排任务的运行

使用特权

评论回复
11
wangzsa| | 2018-12-10 15:05 | 只看该作者
避免发送数据流时不要搞得不连续

使用特权

评论回复
12
zhanglli| | 2018-12-10 15:14 | 只看该作者
是,还得避免接受数据流时不要造成数据覆盖

使用特权

评论回复
13
zhuww|  楼主 | 2018-12-10 15:18 | 只看该作者

波特率太低的话,可以用中断发。

使用特权

评论回复
14
lium| | 2018-12-10 15:26 | 只看该作者

越低越可以做其它事情,

中断驱动就可以了,或者先发送,做一会其它事情,再发送

使用特权

评论回复
15
yufe| | 2018-12-10 15:32 | 只看该作者

缓存的数组采用移位寄存的方式不妨试试看。

使用特权

评论回复
16
guoyt| | 2018-12-10 15:35 | 只看该作者
设计的时候要定义256个长度的数组。之所以要定义256个长度的数组,就是为了能够让数组“首尾相接”。因为0 -1 = 255 , 255+1 = 0。

使用特权

评论回复
17
llia| | 2018-12-10 15:38 | 只看该作者

嗯,预料中的结果,先结贴吧,多谢大家啦

使用特权

评论回复
18
paotangsan| | 2018-12-14 11:46 | 只看该作者
看优先级别吧应该

使用特权

评论回复
19
ayb_ice| | 2018-12-14 13:31 | 只看该作者
当然不是必须等,不然还要中断干什么

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

893

主题

8252

帖子

1

粉丝