OpenEdv-开源电子网

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

stm32 串口发送程序

[复制链接]

18

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2015-7-8
在线时间
10 小时
发表于 2015-7-17 10:11:51 | 显示全部楼层 |阅读模式
5金钱

判断串口发来的数据是否为0x01  若是显示接收到的数据正确  否显示接收数据错误 并显示接收到的信息
  if(USART_RX_STA&0x80)
  {       
   len=USART_RX_STA&0x3f;//得到此次接收到的数据长度
   LCD_Clear(WHITE);   
   if((int)USART_RX_BUF[0]==0x01)
   {
       Show_Str(60,110,"接收到的数据正确",16,0);
     delay_ms(500);
       }
    else
    {
     Show_Str(60,110,"接收到的数据错误",16,0);
     Show_Str(60,130,&USART_RX_BUF[0],16,0);
      delay_ms(500);
       }
  }else
  {
   times++;
   if(times%30==0)LED0=!LED0;//闪烁LED,提示系统正在运行.
   delay_ms(10);  
  }

发送0x01  显示屏显示的结果是  接收到的数据错误   0x01

最佳答案

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

回复【19楼】ziyizfm: --------------------------------- 发送改回1,判断接收到的数据是不是 (1 || 0x31) 还不行的话就一步一步调试吧
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-7-17 10:11:52 | 显示全部楼层
回复【19楼】ziyizfm:
---------------------------------
发送改回1,判断接收到的数据是不是 (1 || 0x31)
还不行的话就一步一步调试吧
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-7-17 10:42:08 | 显示全部楼层
去掉int强制转换试试,然感觉这个int在这很无聊
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

18

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2015-7-8
在线时间
10 小时
 楼主| 发表于 2015-7-17 10:47:07 | 显示全部楼层
开始没加int  还是这个结果  我以为是u8和int之间不能做判断的结果呢   但是改了之后还是不行,问题应该不在这
回复

使用道具 举报

18

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2015-7-8
在线时间
10 小时
 楼主| 发表于 2015-7-17 10:47:30 | 显示全部楼层
回复【2楼】龙之谷:
---------------------------------
开始没加int  还是这个结果  我以为是u8和int之间不能做判断的结果呢   但是改了之后还是不行,问题应该不在这
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-7-17 10:54:27 | 显示全部楼层
回复【4楼】ziyizfm:
---------------------------------
你屏幕显示的数据是0x01?显示还带0x前缀?
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

18

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2015-7-8
在线时间
10 小时
 楼主| 发表于 2015-7-17 10:59:53 | 显示全部楼层
回复【5楼】龙之谷:
---------------------------------
回复【5楼】龙之谷:
---------------------------------
我现在把0x01换成了11,怕前缀的问题  但是还是现实接收数据错误  下面现实的接收结果还是正确的
!_ !   这是怎么了   怎么这怎简单的程序都乱起八糟的
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-7-17 11:08:23 | 显示全部楼层
回复【6楼】ziyizfm:
---------------------------------
判断语句换成if(...!= 0x01){接受错误}
else{接收正确}
最好把显示截屏,我看一下你的显示数据
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

18

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2015-7-8
在线时间
10 小时
 楼主| 发表于 2015-7-17 12:36:36 | 显示全部楼层

回复

使用道具 举报

18

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2015-7-8
在线时间
10 小时
 楼主| 发表于 2015-7-17 12:38:28 | 显示全部楼层
回复【7楼】龙之谷:
---------------------------------
上面就是全部 用串口助手发送11   显示接收数据失败
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-7-17 13:36:35 | 显示全部楼层
Show_Str(60,110,"接收到的数据错误",16,0);
 Show_Str(60,130,&USART_RX_BUF[0],16,0);      //这个值在哪里显示????

我说的你拍个照片看一下显示的数据,你屏幕显示上没体现出来USART_RX_BUF[0]的数值啊?这个值不是应该在“接收到的数据错误“下一行显示吗
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

18

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2015-7-8
在线时间
10 小时
 楼主| 发表于 2015-7-18 16:00:23 | 显示全部楼层
回复【10楼】龙之谷:
---------------------------------
不好意思 发错图了  有新上传了一张 您看一下  是哪里出问题了
回复

使用道具 举报

18

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2015-7-8
在线时间
10 小时
 楼主| 发表于 2015-7-18 16:08:51 | 显示全部楼层

程序就多加了接收错误信息的时候显示接收来的错误信息
回复

使用道具 举报

19

主题

102

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2015-6-19
在线时间
1 小时
发表于 2015-7-18 20:59:55 | 显示全部楼层
点击HEX发送
回复

使用道具 举报

19

主题

102

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2015-6-19
在线时间
1 小时
发表于 2015-7-18 21:02:20 | 显示全部楼层
你这样发送的是字符串,它的值不相等,勾选HEX发送!
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-7-18 21:10:08 | 显示全部楼层
回复【12楼】ziyizfm:
---------------------------------
不要用数组,直接把接收到的数据赋值给全局变量a,打印到屏幕看看
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

18

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2015-7-8
在线时间
10 小时
 楼主| 发表于 2015-7-19 14:39:10 | 显示全部楼层
回复【14楼】张鋆:
---------------------------------
回复【14楼】张鋆:
---------------------------------
可是我将接收到的数据强制转换成int类型了啊
回复

使用道具 举报

19

主题

102

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2015-6-19
在线时间
1 小时
发表于 2015-7-19 21:53:29 | 显示全部楼层
回复【16楼】ziyizfm:
-----------------------------
跟类型没有关系,值的大小不会改变
回复

使用道具 举报

18

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2015-7-8
在线时间
10 小时
 楼主| 发表于 2015-7-20 15:38:11 | 显示全部楼层
回复【17楼】张鋆:
---------------------------------
点击hex发送了  也是相同的结果。
回复

使用道具 举报

18

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2015-7-8
在线时间
10 小时
 楼主| 发表于 2015-7-20 15:38:51 | 显示全部楼层
回复【15楼】龙之谷:
---------------------------------
不用数组也是一样的结果
回复

使用道具 举报

39

主题

598

帖子

0

精华

高级会员

Rank: 4

积分
875
金钱
875
注册时间
2013-12-18
在线时间
41 小时
发表于 2015-7-20 19:20:15 | 显示全部楼层
串口调试助手发的是字符串把,你用字符串和int比,应该怎么都不能达到你想要的把?
回复

使用道具 举报

18

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2015-7-8
在线时间
10 小时
 楼主| 发表于 2015-7-21 11:08:58 | 显示全部楼层
回复【20楼】龙之谷:
--------------------------------
真的是0x31  单步调试时显示的是 res[0]=0x31 '1'    为什么是0x31呢
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-7-21 11:29:20 | 显示全部楼层
回复【22楼】ziyizfm:
---------------------------------
13楼正解

多看几遍ASCII表,区分一下字符和数字的区别
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

1

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2015-7-16
在线时间
3 小时
发表于 2015-7-21 13:55:22 | 显示全部楼层
C基础要加强哦
回复

使用道具 举报

39

主题

598

帖子

0

精华

高级会员

Rank: 4

积分
875
金钱
875
注册时间
2013-12-18
在线时间
41 小时
发表于 2015-7-21 14:13:50 | 显示全部楼层
回复【22楼】ziyizfm:
---------------------------------
 这是C的基础呀,我现在还记得我C语言期末考试有一道题就是字符变整就是-‘0’或者-30H(16进制),字符1的ASCII就是0x31
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 23:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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