OpenEdv-开源电子网

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

STM32如何处理数据?

[复制链接]

2

主题

5

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2019-3-7
在线时间
8 小时
发表于 2019-3-11 00:43:31 | 显示全部楼层 |阅读模式
1金钱
1.FF FF 08 00 00 00 00 00 00 73 7B 36(这条数据五秒一收)
2.FF FF 0A 00 00 00 00 00 00 01 4D 01 59 36(这条数据一秒一收)
3.FF FF 28 00 00 00 00 00 00 60 00 01 00 1C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 A5 36(这条数据正确就接收需要处理我这边响应,发送一次)
我使用串口一中断接收
void USART1_IRQHandler(void)
{
  if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
  {
    USART_ClearITPendingBit(USART1,USART_IT_RXNE);
    Rxdata1[Rxcount1++]=USART_ReceiveData(USART1);
  }
}

我对于前面1和2数据是不处理直接丢弃的!可是我把Rxcount1=0重新等待指令3的时候没有响应我的指令?
初步分析:
1.我赋值Rxcount1=0的时候,由于还在接收指令2可以能数据接收不正确。我接收3的指令时候出现问题没有响应以后的指令。
2.对于前面二条指令我识别之后停止串口接收中断,Rxcount1=0处理完在开启。导致3指令还是接收不正确。
(说那么多就是想说Rxcount1=0的时候不知道串口接收到底是不是正常的第一帧数据ff接收,所以导致后面不好怎么处理)
对于这种不定长的数据有什么好的办法吗?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10572
金钱
10572
注册时间
2017-2-18
在线时间
1914 小时
发表于 2019-3-11 18:34:04 | 显示全部楼层
这种情况可以试试空闲中断来接收不定长数据,论坛有人分享,可以找找~
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-24 01:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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