OpenEdv-开源电子网

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

USART3_TX_BUF数据提取

[复制链接]

5

主题

6

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2019-4-16
在线时间
8 小时
发表于 2019-4-19 18:14:21 | 显示全部楼层 |阅读模式
10金钱
我想用三个数组将USART3_TX_BUF的内容提取出来,提取的要求是:当数据数少于10个时全部保留,当大于10个时只保留前10个数据,数据发送的格式是:数据1-数据2-数据3.目前的问题是第一次提取的数据是符合要求的,但第二次的数据里面,会有第一次数据的残余,就是如果第一次发送的数据是8个,第二次是7个,那么第二次数据里面的第8位是上一次,这个问题应该是数组里面的问题,但是想了好多办法都没有解决,求各位大佬支援,         
u32  ch[2];
         u8 data1[10];
         u8 data2[10];
         u8 data3[10];

for(i=0,j=0;i<rlen;i++)
{
  if((USART3_RX_BUF[i]=='-')&&(j<2))
        {ch[j]=i;j++;}
}
if(ch[0]>9)
{  for(i=0,j=0;i<10,j<10;i++,j++)data1[j]=USART3_RX_BUF[i];        }
else
{for(i=0,j=0;i<ch[0],j<ch[0];i++,j++ )data1[j]=USART3_RX_BUF[i];}
       
if((ch[1]-ch[0])>10)
{for(i=ch[0]+1,j=0;i<ch[1],j<10;i++,j++)data2[j]=USART3_RX_BUF[i];}
else
{for(i=ch[0]+1,j=0;i<ch[1],j<(ch[1]-ch[0]-1);i++,j++)data2[j]=USART3_RX_BUF[i];}
       
if((rlen-ch[1])>10)
{for(i=ch[1]+1,j=0;i<rlen,j<10;i++,j++)data3[j]=USART3_RX_BUF[i];}
else
{for(i=ch[1]+1,j=0;i<rlen,j<rlen-ch[1]-1;i++,j++) data3[j]=USART3_RX_BUF[i];}

最佳答案

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

问题找到了,忘记加结束符了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

6

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2019-4-16
在线时间
8 小时
 楼主| 发表于 2019-4-19 18:14:22 | 显示全部楼层
问题找到了,忘记加结束符了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2019-4-20 02:33:48 | 显示全部楼层
自己先在纸上算算,方法是否正确
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 22:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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