OpenEdv-开源电子网

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

串口接收数据问题~

[复制链接]

3

主题

10

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2015-7-16
在线时间
0 小时
发表于 2015-12-2 10:11:04 | 显示全部楼层 |阅读模式
5金钱
小弟从CC2530单片机串口每次发送4个字符给STM32,一个字符一个字符发送。每隔8s发送一次。STM32这边定义一个变量dat接收字符,然后存到数组里,然后用数组中的元素来处理数据。可是问题来了,有时接收到的数据存放的顺序被打乱了,导致我数据处理的结果也不对。有什么方法可以改进一下吗??

求大神帮忙,这个问题困扰我好几天了~

[mw_shl_code=c,true]dat= USART_ReceiveData(USART1);//接收数据 USART1_buf[USART1_bufcnt ++] = dat; ....... ....... if(USART1_bufcnt == 4) { USART1_bufcnt = 0; temp = (USART1_buf[0] - 48) * 10 + (USART1_buf[1] - 48); hum = (USART1_buf[2] - 48) * 10 + (USART1_buf[3] - 48); }[/mw_shl_code]

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

20

主题

468

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1684
金钱
1684
注册时间
2014-2-25
在线时间
230 小时
发表于 2015-12-2 13:18:42 | 显示全部楼层
这样子肯定不好用啦。你是8S才发一次,我建议你来一个检测。就是说某次接收到的数据不够4个字节,就丢掉,从新等待下一次的接收;或者加入以下帧头帧尾。

其实我觉得这种不用接受每个字节都判断一下的应用,最好是利用串口的 “空闲中断+DMA” 的方式来接受了,简直是省时省力。
回复

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2015-7-16
在线时间
0 小时
 楼主| 发表于 2015-12-2 15:07:52 | 显示全部楼层
回复【2楼】1201yuge:
---------------------------------
谢谢你,我试试
回复

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2015-7-16
在线时间
0 小时
 楼主| 发表于 2015-12-2 15:09:54 | 显示全部楼层
回复【2楼】1201yuge:
---------------------------------
我是每隔8s发送4个字符
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 02:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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