OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2555|回复: 9

有关串口的空闲中断接收数据的问题

[复制链接]

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2020-6-12
在线时间
24 小时
发表于 2020-6-12 14:32:20 | 显示全部楼层 |阅读模式
1金钱
我用串口的接收中断来接收数据,在空闲中断中置一个标志位,进而在主函数中进行数据处理,但是发现在空闲中断触发的时候并没有接收完一个完整的数据帧,而且触发空闲中断的时候接收到的字节长度不固定,这种有什么好的处理方式吗?

最佳答案

查看完整内容[请看2#楼]

串口的空闲中断时间相对于串口通信来说还是太短,一般用TIMER自己实现一个接收超时!但是如果是想modbus这种的有帧间隔时间,则用接收超时合适!如果想那种有帧头帧长固定格式的,用数据流合适!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

271

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1236
金钱
1236
注册时间
2015-5-14
在线时间
352 小时
发表于 2020-6-12 14:32:21 来自手机 | 显示全部楼层
串口的空闲中断时间相对于串口通信来说还是太短,一般用TIMER自己实现一个接收超时!但是如果是想modbus这种的有帧间隔时间,则用接收超时合适!如果想那种有帧头帧长固定格式的,用数据流合适!
回复

使用道具 举报

9

主题

219

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1434
金钱
1434
注册时间
2020-5-12
在线时间
394 小时
发表于 2020-6-12 16:01:15 | 显示全部楼层
实际情况下,串口都不会是很标准的。这种情况下我建议使用定时器来定时字符之间的超时。
回复

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2020-6-12 20:15:42 | 显示全部楼层
发送不是连续发送的?
一分耕耘一分收获。
回复

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2020-6-12
在线时间
24 小时
 楼主| 发表于 2020-6-13 13:58:55 | 显示全部楼层
叶子君 发表于 2020-6-12 16:01
实际情况下,串口都不会是很标准的。这种情况下我建议使用定时器来定时字符之间的超时。

这个超时间隔应该设成多大比较好呢?
回复

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2020-6-12
在线时间
24 小时
 楼主| 发表于 2020-6-13 14:00:10 | 显示全部楼层
yklstudent 发表于 2020-6-12 20:15
发送不是连续发送的?

是连续发送的,不过中间的是通过一个ZigBee转串口的小模块完成的通信,我在想会不会是这个模块处理的问题?
回复

使用道具 举报

9

主题

219

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1434
金钱
1434
注册时间
2020-5-12
在线时间
394 小时
发表于 2020-6-15 11:04:35 | 显示全部楼层
无痕幽雨 发表于 2020-6-13 19:48
串口的空闲中断时间相对于串口通信来说还是太短,一般用TIMER自己实现一个接收超时!但是如果是想modbus这 ...

十分同意你的观点,我实际也是这样操作的。
回复

使用道具 举报

9

主题

219

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1434
金钱
1434
注册时间
2020-5-12
在线时间
394 小时
发表于 2020-6-15 11:07:46 | 显示全部楼层
SuperRookie 发表于 2020-6-13 13:58
这个超时间隔应该设成多大比较好呢?

我自己用的是3ms,这个可以自己实测下。
回复

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2020-6-12
在线时间
24 小时
 楼主| 发表于 2020-6-16 14:36:08 | 显示全部楼层
无痕幽雨 发表于 2020-6-13 19:48
串口的空闲中断时间相对于串口通信来说还是太短,一般用TIMER自己实现一个接收超时!但是如果是想modbus这 ...

感谢分享,自己写接收超时实现了
回复

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2020-6-12
在线时间
24 小时
 楼主| 发表于 2020-6-16 14:36:35 | 显示全部楼层
叶子君 发表于 2020-6-15 11:07
我自己用的是3ms,这个可以自己实测下。

感谢分享,自己写接收超时实现了
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-16 00:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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