发新帖我要提问
123
返回列表
打印
[STM32F1]

串口接收丢失字节问题

[复制链接]
楼主: coderdd
手机看帖
扫描二维码
随时随地手机跟帖
41
sting_yang| | 2017-6-24 11:47 | 只看该作者 回帖奖励 |倒序浏览
串口中断代码太多了

使用特权

评论回复
42
menji13| | 2017-6-24 11:48 | 只看该作者
最近一个项目中一块stm32f103rc的只用到了48MHz,用到了5个串口,其中4个串口每次接收都需要接收从机发来的连续250个字节的包,一个不丢。个人不用库,只能说你整体代码太累赘或者串口优先级太低。可以设置一个过载错误中断看看。

使用特权

评论回复
43
MOn51| | 2017-6-24 12:38 | 只看该作者
根本就不应该在中断程序里去判别。

使用特权

评论回复
44
shahexu| | 2017-6-24 15:41 | 只看该作者
怎么判断数据漏掉了,个数少了,还是其他原因

使用特权

评论回复
45
Y634640993| | 2017-6-24 16:14 | 只看该作者
建议楼主使用DMA+环形缓存区

使用特权

评论回复
46
天南星雨| | 2017-6-24 16:48 | 只看该作者
首先确认是偶发事件还是没接收一组数据都会有丢数据,最好将程序中其他功能都暂时屏蔽掉,确认是代码本身问题还是优先级问题。

使用特权

评论回复
47
mackyming| | 2017-6-24 19:07 | 只看该作者
降低波特率吧,按我的经验实际使用最好不要超过57600,数据量大最好启用下硬件CRC校验,如果是控制数据的话建议还是改CAN总线吧

使用特权

评论回复
48
coderdd|  楼主 | 2017-6-24 19:34 | 只看该作者
多谢大家,波特率降到9600暂时没发现问题,可能是systick一毫秒中断导致抢占或者其它原因吧。后面再慢慢调试看看

使用特权

评论回复
49
coderdd|  楼主 | 2017-6-24 19:41 | 只看该作者
menji13 发表于 2017-6-24 11:48
最近一个项目中一块stm32f103rc的只用到了48MHz,用到了5个串口,其中4个串口每次接收都需要接收从机发来的 ...

嗯,赞一个,我用的内部晶振,不知会不会受影响。我也在想可能是优先级的问题,因为有个1毫秒的systick

使用特权

评论回复
50
Lbsonggz| | 2017-6-25 10:58 | 只看该作者
1. 降低波特率至9600或4800,
2,高波特率使用外部高精度晶振
3,串口中断仅做接收,设置标志,标志置位也就是接收完成后扔给主函数处理

使用特权

评论回复
51
lemonboard| | 2017-6-25 13:37 | 只看该作者
Y634640993 发表于 2017-6-24 16:14
建议楼主使用DMA+环形缓存区

这个是正解吧

使用特权

评论回复
52
1124008619| | 2017-6-25 16:58 | 只看该作者
小白 同求,优先级的设立怎么设?

使用特权

评论回复
53
1124008619| | 2017-6-25 16:58 | 只看该作者
小白 同求,优先级的设立怎么设?

使用特权

评论回复
54
tdh03z| | 2017-6-25 17:17 | 只看该作者
用DMA方式接收,极大减少中断频率

使用特权

评论回复
55
绿筱lvx| | 2017-6-28 15:39 | 只看该作者
dma接收

使用特权

评论回复
56
GhostGuardian| | 2017-7-11 11:22 | 只看该作者
中断程序代码逻辑不太合理,容错率也低

使用特权

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

本版积分规则