OpenEdv-开源电子网

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

STM32F103RCT6的芯片,UART4串口输出,接收到的数据不规则,请问是什么原因呢

[复制链接]

19

主题

107

帖子

0

精华

初级会员

Rank: 2

积分
195
金钱
195
注册时间
2015-3-5
在线时间
44 小时
发表于 2015-3-26 22:33:29 | 显示全部楼层 |阅读模式
5金钱
stm32的代码数据输出的代码如下,波特率9600
[mw_shl_code=c,true]printcounter++; //Print data to UART if (printcounter>=2) { buff[0]=0X88; buff[1]=0XA1; buff[2]=0X06; buff[3]=ACCread[0]; buff[4]=ACCread[1]; buff[5]=ACCread[2]; buff[6]=ACCread[3]; buff[7]=ACCread[4]; buff[8]=ACCread[5]; buff[9]=buff[0]+buff[1]+buff[2]+buff[3]+buff[4]+buff[5]+buff[6]+buff[7]+buff[8]; USART_PutString(buff); printcounter=0; LEDoff; Delay_ms(100); [/mw_shl_code]
程序跑起来没问题,读到的加速度值也正常,但问题是用串口调试助手发现收到的数据异常,截图如下:


用自己搭的LabView读这个串口,也会有这个问题,看来应该不是上位机的问题。

求各位大神指点,实在是想不明白了。

最佳答案

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

多谢原子哥。问题已解决。 问题在于  USART_PutString(buff); 将buff当作是一个字符串,而我采集到的数据中,会有很多的0。若ACCread[1]=0X00, 则buff[4]=ACCread[1],buff[4]也是0X00,在字符串中,00会被认为是空字符,不显示。 然后我加了一个判断,当ACCread[1]=0X00时,将0的ASC码)0X30赋值给buff[4] 然后问题圆满解决啦。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

19

主题

107

帖子

0

精华

初级会员

Rank: 2

积分
195
金钱
195
注册时间
2015-3-5
在线时间
44 小时
 楼主| 发表于 2015-3-26 22:33:30 | 显示全部楼层
多谢原子哥。问题已解决。
问题在于
 USART_PutString(buff);
将buff当作是一个字符串,而我采集到的数据中,会有很多的0。若ACCread[1]=0X00,
则buff[4]=ACCread[1],buff[4]也是0X00,在字符串中,00会被认为是空字符,不显示。

然后我加了一个判断,当ACCread[1]=0X00时,将0的ASC码)0X30赋值给buff[4]
然后问题圆满解决啦。
回复

使用道具 举报

19

主题

107

帖子

0

精华

初级会员

Rank: 2

积分
195
金钱
195
注册时间
2015-3-5
在线时间
44 小时
 楼主| 发表于 2015-3-26 22:35:18 | 显示全部楼层
一行有10个数据,以0X88 0XA1起头对齐,但是接收了几行数据就异常了,试了很多次都有这个问题
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-3-26 23:34:19 | 显示全部楼层
建议楼主仿真一下.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-24 12:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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