打印
[51单片机]

关于串口多字节收发的一个奇怪问题

[复制链接]
1419|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yzcook|  楼主 | 2018-5-28 17:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
沙发
yzcook|  楼主 | 2018-5-28 17:13 | 只看该作者
这是程序


uchar num = 0;
uchar flag=0;
uchar i;
uchar RBuf[4] = {0x00,0x00,0x00,0x00};

/*------------------主程序--------------------*/
void main(void)
{        
        uchar key = 0;
        ConfigUART();
        
        

        while(1)
        {
                if(num == 4)  flag = 1;
                if(flag == 1)//当接收到数据
                {
                        ES = 0;//关闭串口中断
                        for(i=0;i<4;i++)
                        {
//                                SBUF = RBuf;
//                                while(!TI); TI = 0;
         SendByte(RBuf);
                        }                                                        
                        ES = 1;
                        flag = 0;
                        num = 0;
                }
//        cmdRec();
                if((RBuf[0] == 0x1b)&&(RBuf[1] == 0x5b)&&(RBuf[2] == 0x2f)&&(RBuf[3] == 0x31))
                        firstvoice();
                if((RBuf[0] == 0x1b)&&(RBuf[1] == 0x5b)&&(RBuf[2] == 0x2f)&&(RBuf[3] == 0x32))
                        secondvoice();
                if((RBuf[0] == 0x82))
                        lcd_clr();
//                if((RBuf[0] == 0x81))
               
               
               

        }
}




void Uart_Isr() interrupt 4 using 1
{        
        if(RI)
        {        
          RBuf[num] = SBUF;
                while(!RI);
                RI = 0;
                num++;
        }

管理
[url=]更多操作[/url]



使用特权

评论回复
板凳
yzcook|  楼主 | 2018-5-28 17:13 | 只看该作者
[size=0.83em]
1.png (14.46 KB, 下载次数: 0)
下载附件  [url=]保存到相册[/url]
[color=rgb(153, 153, 153) !important]2018-5-28 16:36 上传



用上面的程序在串口实验的时候出现了一个奇怪的现象
在下载程序后的第一次发送数据时会出现这种情况  接收到的第一个数据会出现 E9 但是这个数据并不是我发出去的。
然后第二次发送才接收正常
很奇怪 大神们能否解答一下


使用特权

评论回复
地板
yzcook|  楼主 | 2018-5-28 17:14 | 只看该作者
本帖最后由 yzcook 于 2018-5-28 17:15 编辑

然后我问了别人 别人帮我在程序里面加了个延迟 就能正常接收。

只是在这里加了个1MS的延迟 , 他说可能是芯片BUG 具体也不太清楚。

3.png (9.49 KB )

3.png

使用特权

评论回复
5
liubo0702| | 2018-5-29 17:28 | 只看该作者
这个好像和你串口初始化有关系,我遇到这样的问题,我的是初始化那块造的怪,给你提供点思路,你自己再看看,我时间久了有点记不清楚了

使用特权

评论回复
6
chongdongchen| | 2018-5-29 20:43 | 只看该作者
你应该增加些校验机制,或者直接走协议,比如modbus也可以啊。
至于上电时接收到的乱码,自然会被过滤掉。

使用特权

评论回复
7
一止| | 2018-5-30 09:56 | 只看该作者
正常,上电引脚状态不稳定,出现一个乱码

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

84

帖子

0

粉丝