OpenEdv-开源电子网

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

如果发送与配置的波特率不同的数据,串口助手是不是不会返回数据

[复制链接]

4

主题

11

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2015-7-20
在线时间
0 小时
发表于 2015-9-23 16:37:25 | 显示全部楼层 |阅读模式
5金钱
是这样的,如果系统配置了9600的波特率  我用1200的波特率发送数据,串口助手是不是不返回?、
程序如下
[mw_shl_code=c,true]uart_init(72,9600); while(1) { if(h==0) { if(USART_RX_STA&0x8000) { if(USART_RX_BUF[0]==0x01) { printf("hello"); h=1; } if(USART_RX_BUF[0]!=0x01) { printf("bye");//uart_init(72,1200); } USART_RX_STA=0; } } if(h==0) {printf("ok");} }[/mw_shl_code]

最佳答案

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

我知道了  是原子哥写的协议 : [mw_shl_code=c,true]if(USART1->SR&(1<<5))//接收到数据 { res=USART1->DR; if((USART_RX_STA&0x8000)==0)//接收未完成 { if(USART_RX_STA&0x4000)//接收到了0x0d { if(res!=0x0a)USART_RX_STA=0;//接收错误,重新开始 else USART_RX_STA|=0x8000; //接收完成了 }else //还没收到0X0D { if(res==0x0d)USART_RX_STA|=0x4000; ...
= =新人来了,还请帮助
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

11

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2015-7-20
在线时间
0 小时
 楼主| 发表于 2015-9-23 16:37:26 | 显示全部楼层
我知道了  是原子哥写的协议 :
[mw_shl_code=c,true]if(USART1->SR&(1<<5))//接收到数据 { res=USART1->DR; if((USART_RX_STA&0x8000)==0)//接收未完成 { if(USART_RX_STA&0x4000)//接收到了0x0d { if(res!=0x0a)USART_RX_STA=0;//接收错误,重新开始 else USART_RX_STA|=0x8000; //接收完成了 }else //还没收到0X0D { if(res==0x0d)USART_RX_STA|=0x4000; else { USART_RX_BUF[USART_RX_STA&0X3FFF]=res; USART_RX_STA++; if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//接收数据错误,重新开始接收 } } } }[/mw_shl_code]
这一 行  USART_RX_STA&0x8000  是来判断是否按下回车键, 在串口中是发送按钮,点了之后 就会发现后面自带这个标志
但是 如果修改波特率 这个标志 就变成了 乱码     就检测不出来    所以回馈不了乱码  都是在数据都在USART_RX_BUF中存起来了
不过怎么解决呢? 软件置位?
= =新人来了,还请帮助
回复

使用道具 举报

30

主题

282

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1001
金钱
1001
注册时间
2015-8-24
在线时间
241 小时
发表于 2015-9-23 16:40:41 | 显示全部楼层
不是会不返回,是返回一些乱码。
打个比方,你那边发的东西是四个字节表示一个字,而我这边三个字节三个字节地接,接到的西就不对了。
回复

使用道具 举报

4

主题

11

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2015-7-20
在线时间
0 小时
 楼主| 发表于 2015-9-23 16:45:46 | 显示全部楼层
并不是勒,你看我的串口助手调试

= =新人来了,还请帮助
回复

使用道具 举报

4

主题

11

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2015-7-20
在线时间
0 小时
 楼主| 发表于 2015-9-23 16:53:49 | 显示全部楼层
回复【2楼】沉默焚烧:
---------------------------------
 if(USART_RX_BUF[0]!=0x01)
18
            {
19
                printf("bye");//uart_init(72,1200);
20
            }
应该会返回 bye才对的
= =新人来了,还请帮助
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2015-9-23 17:33:16 | 显示全部楼层
串口助手也会接收到一些数据,不过是些乱码
回复

使用道具 举报

4

主题

11

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2015-7-20
在线时间
0 小时
 楼主| 发表于 2015-9-23 17:35:59 | 显示全部楼层
回复【5楼】三叶草:
---------------------------------
并没有哦,你看我二楼
= =新人来了,还请帮助
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-9-24 23:19:22 | 显示全部楼层
回复【7楼】hallo stm:
---------------------------------
设置正确的波特率.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 10:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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