OpenEdv-开源电子网

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

跪谢!!!!一个简单的串口解析,结果露掉一位,大家帮忙一看

[复制链接]

17

主题

76

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2016-6-14
在线时间
30 小时
发表于 2016-7-28 15:19:08 | 显示全部楼层 |阅读模式
15金钱
u8 USARTFlag = 0;

void USART3_IRQHandler()
{

        static u8 Count3 = 0; //计数
        static u8 Rec3 = 0;     //标记
       
        if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)// 如果有中断
        {
                 USART_ClearITPendingBit(USART3,USART_IT_RXNE);
                 Receive3=USART_ReceiveData(USART3);      //存储数据

                 
                        switch(Rec3)        //rec开始是0,先进入case0
                        {
                                case 0:
                                        if(Receive3 == 0xff)  //是不是包头
                                                Rec3 = 1;   //是,置1
                                        else           
                                                Rec3 = 0; //不是,清零
                                        break;
                                case 1:
                                        Rx3Buffer[Count3] = Receive3;   //存到数组中
                                  Count3++;
                                                if(Count3 > 8)       //一串结束了。
                                        {
                                                Rec3 = 0;    //标记位清零
                                                        Flag3 = 1; //标志位为1
                                                Count3 = 0;//计数清零
                                        }
                                        break;
                               
                                }




不知道哪里错了,把接收的数组输出,正好数组第一个元素不是包头了,包头跑到最后一个去了
FF 04 00 00  00 01 D8 B4   变成了
04  00 00 00 01 D8 B4 FF
小弟跪谢了

最佳答案

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

包头又没放到Rx3Buffer。而且你两串数据才能接到一串
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
发表于 2016-7-28 15:19:09 | 显示全部楼层
包头又没放到Rx3Buffer。而且你两串数据才能接到一串
一直努力就很好。
回复

使用道具 举报

17

主题

76

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2016-6-14
在线时间
30 小时
 楼主| 发表于 2016-7-28 15:22:55 | 显示全部楼层
如果用if写的话怎样写啊
回复

使用道具 举报

6

主题

94

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1581
金钱
1581
注册时间
2016-7-2
在线时间
277 小时
发表于 2016-7-28 15:28:45 | 显示全部楼层
你这包头也没放数组里啊~你最后的FF已经是下一串的了
回复

使用道具 举报

19

主题

430

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1341
金钱
1341
注册时间
2016-4-22
在线时间
187 小时
发表于 2016-7-28 15:38:55 | 显示全部楼层
case 0: 后面添加Rx3Buffer[0] = Receive3;
伤情最是晚凉天,憔悴斯人不堪怜。
邀酒摧肠三杯醉,寻香惊梦五更寒。
钗头凤斜卿有泪,荼蘼花了我无缘。
小楼寂寞新雨月,也难如钩也难圆。
回复

使用道具 举报

0

主题

60

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
295
金钱
295
注册时间
2016-6-17
在线时间
60 小时
发表于 2016-7-28 17:05:50 | 显示全部楼层
case 0:
        if(Receive3 == 0xff)  //是不是包头
                Rec3 = 1;   //是,置1
                Rx3Buffer[Count3] = Receive3;
        else           
                Rec3 = 0; //不是,清零
        break;
case 1:
        Count3++;
        Rx3Buffer[Count3] = Receive3;   //存到数组中
        if(Count3 > 7)       //一串结束了。
        {
                Rec3 = 0;    //标记位清零
                Flag3 = 1; //标志位为1
                Count3 = 0;//计数清零
        }
        break;
回复

使用道具 举报

8

主题

136

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
428
金钱
428
注册时间
2015-4-24
在线时间
85 小时
发表于 2016-8-3 16:25:46 | 显示全部楼层
楼主为什么要加USART_ClearITPendingBit(USART3,USART_IT_RXNE);这句话,它不是自动清零的吗
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2016-8-3
在线时间
5 小时
发表于 2016-8-3 17:38:57 | 显示全部楼层
zzx499 发表于 2016-7-28 17:05
case 0:
        if(Receive3 == 0xff)  //是不是包头
                Rec3 = 1;   //是,置1

改过后的 Count3 要+1
回复

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2019-5-13
在线时间
17 小时
发表于 2019-6-10 09:14:09 | 显示全部楼层
楼主最后怎么解决的?
回复

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2019-5-13
在线时间
17 小时
发表于 2019-6-10 20:27:06 | 显示全部楼层
qq942266575 发表于 2016-7-28 15:19
包头又没放到Rx3Buffer。而且你两串数据才能接到一串

在吗?大神,求解释为啥两条才收到一条
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-9 18:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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