找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8286|回复: 0
打印 上一主题 下一主题
收起左侧

关于串口中断实时接收和发送问题

[复制链接]
跳转到指定楼层
楼主
ID:79358 发表于 2016-10-28 13:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
串口中断实时接收:我的理解是设置一个缓存,但是这个缓存一定要大于你发送字节的最大长度,只要SBUF中有数据就往缓存里面装,因为中断的进入是不确定的,只要有数据就进中断,如果缓存中的数据满了就从头再装,(这里可以取余),那么会不会从头再装的数据会不会把前面的数据给覆盖掉呢,有这个想法很好,至少你考虑了接收的过程。再看看我们设的缓存的长度比发送字符串的最大长度还要大,即使接收的是最长的数据串,那么缓存中还有一部分内存可以装数据,这样下一包数据过来就可以装到剩下的内存里面了,如果这一组数据还没有装完呢,接着从头装把前面的数据覆盖掉,此时前面的数据我们已经提取到了或者是已经是处理完了,所以不必担心前面被覆盖的数据。那么话又说回来,怎么提取接收到的数据呢,这个嘛就是缓存里面只要有数据接收就去提取,事先最好判断一下有没有需要提取的数据,这里大概说一下思路,设置一个提取结束指针和中断中的接收指针进行对比,如果这个提取结束指针小于中断接收指针则说明接收缓存里面有数据,就去提取。那么怎么把数据拿出来呢,根据发送结束指针和中断接收指针计算缓存中接收数据的长度,最大长度就是缓存长度。长度计算出来了即开始取数据啦,取出来就可用啦。。。。
串口中断发送:
了解了串口接收的话,那么相信你很容易了解发送,其实发送和接收正好是互逆的过程。接收是把SBUF中的数据取出来,发送数把SBUF中的数发出去,但是首先要把数据写进去才能发送啊!!这个写的过程就是接收的逆过程。。。有错误的地方希望大家积极指出错误,自己在学过程中推敲难免有错,还需要和大家共同学习,共同成长。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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