OpenEdv-开源电子网

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

STM32串口通信数据处理

[复制链接]

2

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2016-1-7
在线时间
10 小时
发表于 2017-5-13 10:59:06 | 显示全部楼层 |阅读模式
各位大神:
   我用串口调试助手发送字符00010001,STM32接收到字符后发送回串口调试助手,回传都是正常的,也就是数据传输没有问题。这是接收函数TxRxBuffer=USART_ReceiveData(USART1);
根据我发送的数据那么TxRxBuffer的值应该就是00010001,我需要判断每一位是0还是1,该怎么写函数判断?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2017-2-9
在线时间
52 小时
发表于 2017-5-20 15:58:12 | 显示全部楼层
本帖最后由 幼儿园扛把子 于 2017-5-20 15:59 编辑

u8 i,temp; temp=TxRxBuffer;
for(i=0;i<8;i++)
{         
       if(temp&0x01==1) //该位为1         
       {                          }         
      else                        //为0         
      {                          }         
      temp=temp>>1;    //判断下一位
}

回复 支持 1 反对 0

使用道具 举报

2

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2016-1-7
在线时间
10 小时
 楼主| 发表于 2017-5-18 20:56:40 | 显示全部楼层
有大神可以指教一下吗?
回复 支持 反对

使用道具 举报

4

主题

27

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
267
金钱
267
注册时间
2014-4-12
在线时间
33 小时
发表于 2017-5-18 21:49:08 | 显示全部楼层
移位+与
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2016-1-7
在线时间
10 小时
 楼主| 发表于 2017-5-19 20:36:05 | 显示全部楼层

可否贴出代码啊  谢谢啊
回复 支持 反对

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
发表于 2017-5-19 22:00:39 | 显示全部楼层
一个字符8位,你发送的是字符,你应该判断的是字符0或1,而不是二进制位的0或1
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2016-1-7
在线时间
10 小时
 楼主| 发表于 2017-5-20 17:01:02 | 显示全部楼层
幼儿园扛把子 发表于 2017-5-20 15:58
u8 i,temp; temp=TxRxBuffer;
for(i=0;i>1;    //判断下一位
}

        u8 i,temp;
        if(USART_GetITStatus(USART1,USART_IT_RXNE))
                 {
                         temp=USART_ReceiveData(USART1);
                         //USART_SendData(USART1,temp);
                         for(i=0;i<8;i++)
        {         
       if(temp&0x01==1)        
       {UARTRXBuff='1';}         
      else                             
       {UARTRXBuff='0';}            
      temp=temp>>1;
        }
                   USART_SendData(USART1,UARTRXBuff[0]);               
                 }
                 
}

UARTRXBuff【】是一个数组
以上是串口接收到数据之后的处理,用串口调试工具调试,我发送11111111的时候接收到的应该是1才对,怎么8个1全部都接收到了?而且如果我发送更多的1的时候都能接收到,麻烦看一下是什么地方出了问题。
回复 支持 反对

使用道具 举报

6

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2017-2-9
在线时间
52 小时
发表于 2017-5-20 17:31:37 | 显示全部楼层
Beson 发表于 2017-5-20 17:01
u8 i,temp;
        if(USART_GetITStatus(USART1,USART_IT_RXNE))
                 {

你给UARTRXBuff赋值 '1' ?不应该是UARTRXBuff[0]什么的吗,然后你是不是发的是字符啊,八个字符的话肯定会执行8次中断,每次中断都会给你返回数据,你试试16以进制发送,应该每个串口助手都有这种功能
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2016-1-7
在线时间
10 小时
 楼主| 发表于 2017-5-20 17:34:02 | 显示全部楼层
幼儿园扛把子 发表于 2017-5-20 17:31
你给UARTRXBuff赋值 '1' ?不应该是UARTRXBuff[0]什么的吗,然后你是不是发的是字符啊,八个字符的话肯定 ...

u8 i,temp;
        if(USART_GetITStatus(USART1,USART_IT_RXNE))
                 {
                         temp=USART_ReceiveData(USART1);
                         //USART_SendData(USART1,temp);
                         for(i=0;i<8;i++)
        {         
       if((temp&0x01)==1)        
       {UARTRXBuff='1';}         
      else                             
       {UARTRXBuff='0';}            
      temp=temp<<8;
        }
                   USART_SendData(USART1,UARTRXBuff[0]);               
                 }


是这样的 前面的复制错了
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2016-1-7
在线时间
10 小时
 楼主| 发表于 2017-5-20 17:36:16 | 显示全部楼层
Beson 发表于 2017-5-20 17:34
u8 i,temp;
        if(USART_GetITStatus(USART1,USART_IT_RXNE))
                 {

奇怪我黏贴的时候是对的,发表之后竟然错了,UARTRXBuff【i】='1';赋值没问题。
回复 支持 反对

使用道具 举报

6

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2017-2-9
在线时间
52 小时
发表于 2017-5-20 18:57:05 | 显示全部楼层
Beson 发表于 2017-5-20 17:36
奇怪我黏贴的时候是对的,发表之后竟然错了,UARTRXBuff【i】='1';赋值没问题。

那你串口助手发送的时候你是选的16进制发的还是ASCII码发的
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2016-1-7
在线时间
10 小时
 楼主| 发表于 2017-5-21 00:38:30 | 显示全部楼层
是字符发送的
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-17 09:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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