OpenEdv-开源电子网

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

STM32 串口收数据出现问题,在帖子中详细描述

[复制链接]

7

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2018-8-29
在线时间
17 小时
发表于 2018-9-20 10:42:06 | 显示全部楼层 |阅读模式
4金钱
目的是利用串口收到一帧数据,然后根据数据执行相应的操作。遇到的问题,在主函数里面使用while循环,目的是为了随时接收到指令就进行相应的操作,如果只是加入处理串口数据的函数就接收正常,但是加入其他函数后就出现异常。中断函数里面是用了串口接收中断和空闲中断,为了正确的接收一帧数据。这个问题困扰了很久,百度了很久也没有解决,希望有大佬能帮忙解决一下,或者提供一个解决的思路,感激不尽。
1537411166(1).jpg 1537411134(1).jpg 1537411193(1).jpg


最佳答案

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

哈哈哈,搞了两三个小时终于找到问题了,我在systermrestor里面有对内部flash的写操作,写的时候好像是会把所有中断关闭,还没仔细研究,先不下定论,应该就是这个问题,回头还要在研究一下。总之,还是吧这个函数丢到while外面好啦,每次重启在写进flash。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2018-8-29
在线时间
17 小时
 楼主| 发表于 2018-9-20 10:42:07 | 显示全部楼层
哈哈哈,搞了两三个小时终于找到问题了,我在systermrestor里面有对内部flash的写操作,写的时候好像是会把所有中断关闭,还没仔细研究,先不下定论,应该就是这个问题,回头还要在研究一下。总之,还是吧这个函数丢到while外面好啦,每次重启在写进flash。
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7568
金钱
7568
注册时间
2016-11-30
在线时间
643 小时
发表于 2018-9-20 11:56:05 | 显示全部楼层
首先,你要说明你的异常是什么现象。猜测可能的原因:串口接收buf如果不够大,可能主程序里其它函数处理时间较长,导致串口数据溢出。
回复

使用道具 举报

7

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
137
金钱
137
注册时间
2018-8-29
在线时间
17 小时
 楼主| 发表于 2018-9-20 12:29:16 | 显示全部楼层
lvkanger 发表于 2018-9-20 11:56
首先,你要说明你的异常是什么现象。猜测可能的原因:串口接收buf如果不够大,可能主程序里其它函数处理时 ...

异常现象是当while循环中只有串口处理数据的那个函数时串口可以正常接收和处理数据,当加上其他函数时,串口接收的数据就会不正常,出现丢失
回复

使用道具 举报

0

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2016-8-2
在线时间
13 小时
发表于 2018-9-20 12:38:34 来自手机 | 显示全部楼层
把打印的东西打出来看下
回复

使用道具 举报

7

主题

61

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
343
金钱
343
注册时间
2017-4-16
在线时间
72 小时
发表于 2018-9-20 14:09:12 | 显示全部楼层
可以自己定一个传输协议,包含头数据、字节数、校验、结尾数据。以此保证数据完整
回复

使用道具 举报

13

主题

76

帖子

0

精华

高级会员

Rank: 4

积分
539
金钱
539
注册时间
2016-4-19
在线时间
139 小时
发表于 2018-9-20 14:33:36 | 显示全部楼层
你串口数据帧与帧时间间隔长一点试试
回复

使用道具 举报

19

主题

171

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2018-9-3
在线时间
50 小时
发表于 2018-9-20 14:35:28 | 显示全部楼层
水一下帖子,我前段时间也不会用串口,现在知道怎么输出了,也知道怎么接收了,配置好了,楼主的帖子太深奥,顶一下
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7568
金钱
7568
注册时间
2016-11-30
在线时间
643 小时
发表于 2018-9-20 14:38:12 | 显示全部楼层
伟大的韦懿懿 发表于 2018-9-20 12:29
异常现象是当while循环中只有串口处理数据的那个函数时串口可以正常接收和处理数据,当加上其他函数时, ...

那是不是串口通信速度太快,主程序处理太慢导致数据丢失的呢?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 01:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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